bg-tutorials

Node.js Üzerine SSL Sertifikası Nasıl Kurulur

Bu eğitimde, yerleşik https modülünü kullanarak Node.js’e SSL sertifikası nasıl kurulur öğreneceksiniz. Apache veya Nginx gibi bir web sunucusunun aksine, Node.js sertifikanızı, özel anahtarınızı ve CA zincirinizi doğrudan JavaScript içinde yükler; bu nedenle “kurulum” uygulama kodunuzun içinde gerçekleşir.

Node.js’de CSR kodu oluşturma

Henüz SSL sertifikası için başvurmadıysanız, önce bir CSR (Sertifika İmzalama Talebi) oluşturmanız gerekir. CSR, iletişim bilgilerinizi ve açık anahtarınızı içeren küçük, kodlanmış bir metin bloğudur ve siparişiniz sırasında Sertifika Yetkilisi’ne (CA) gönderirsiniz. İki seçeneğiniz vardır:

Siparişiniz sırasında CSR’ı Sertifika Yetkilisi’ne gönderin. CA bunu doğruladıktan ve SSL sertifikanızı verdikten sonra aşağıdaki kurulum adımlarına geçin.

Node.js’e SSL sertifikası kurma

Adım 1: Sertifika dosyalarınızı hazırlayın

Doğrulama işleminden sonra Sertifika Yetkilisi, sertifika dosyalarını size e-posta ile gönderir. Arşivi çıkarın. Elinizde şunlar olmalı:

  • yourdomain.crt, birincil alan adı sertifikanız.
  • yourdomain.ca-bundle, CA paketini oluşturan ara (ve kök) sertifikalar.
  • yourdomain.key, CSR ile birlikte oluşturduğunuz özel anahtar.

Tarayıcıların sadece alan adı sertifikanızı değil, ara sertifika zincirini de alması gerekir; aksi halde bazı istemciler bağlantıyı reddedecektir. Node.js’de zinciri sunmanın en temiz yolu, sertifikanızı ve CA paketinizi tek bir full-chain dosyasında birleştirmektir:

cat yourdomain.crt yourdomain.ca-bundle > fullchain.crt

fullchain.crt ve yourdomain.key dosyalarını uygulamanızın okuyabileceği bir yere koyun ve özel anahtarın sadece Node.js’i çalıştıran kullanıcı tarafından okunabilir olmasını sağlayın.

Adım 2: Node.js’de bir HTTPS sunucusu oluşturun

Bir sunucu dosyası oluşturun. Bu gösterim için ona https_server.js adını veriyoruz, ancak istediğiniz dosya adını kullanabilirsiniz. Aşağıdaki örnek, desteklenen her Node.js sürümünde çalışan CommonJS (require) kullanır. Kalın yazılan yolları kendi bilgilerinizle değiştirin:

const https = require('https');
const fs = require('fs');

const options = {
  key: fs.readFileSync('/path/to/private.key'),
  cert: fs.readFileSync('/path/to/fullchain.crt'),
  // Recommended TLS hardening (2026): never negotiate below TLS 1.2
  minVersion: 'TLSv1.2'
};

https.createServer(options, (req, res) => {
  res.writeHead(200);
  res.end('Welcome to a Node.js HTTPS servern');
}).listen(443);

Kalın yazılan kısımları kendi bilgilerinizle değiştirmeniz gerekir:

  • /path/to/private.key: özel anahtar dosyanızın tam yolu.
  • /path/to/fullchain.crt: Adım 1’de oluşturduğunuz full-chain dosyasının tam yolu.

Port hakkında not: HTTPS varsayılan olarak 443 portunu kullanır. Bu porta bağlanmak yükseltilmiş yetkiler gerektirir, bu nedenle bir ters proxy arkasında veya geliştirme ortamında 8443 gibi yüksek bir port kullanmayı tercih edebilirsiniz. Sadece listen()‘a geçirilen değeri değiştirin.

ES modüllerini mi tercih ediyorsunuz? Projeniz package.json içinde "type": "module" kullanıyorsa (veya bir .mjs dosyasıysa), bunun yerine import sözdizimini kullanın. TLS seçenekleri aynıdır:

import https from 'node:https';
import fs from 'node:fs';

const options = {
  key: fs.readFileSync('/path/to/private.key'),
  cert: fs.readFileSync('/path/to/fullchain.crt'),
  minVersion: 'TLSv1.2'
};

https.createServer(options, (req, res) => {
  res.writeHead(200);
  res.end('Welcome to a Node.js HTTPS servern');
}).listen(443);

Alternatif: zinciri ca: seçeneğiyle geçirin. Bir full-chain dosyası oluşturmak yerine dosyaları ayrı tutmayı tercih ederseniz, cert‘i alan adı sertifikanıza işaret ettirin ve ara sertifikaları bir ca dizisi üzerinden sağlayın:

const options = {
  key: fs.readFileSync('/path/to/private.key'),
  cert: fs.readFileSync('/path/to/yourdomain.crt'),
  ca: [
    fs.readFileSync('/path/to/intermediate.crt'),
    fs.readFileSync('/path/to/ca_bundle.crt')
  ],
  minVersion: 'TLSv1.2'
};

Express mi kullanıyorsunuz? Express app‘inizi istek işleyici olarak geçirin. Sertifika seçenekleri tamamen aynı kalır:

const express = require('express');
const https = require('https');
const fs = require('fs');

const app = express();
app.get('/', (req, res) => res.send('Hello over HTTPS'));

const options = {
  key: fs.readFileSync('/path/to/private.key'),
  cert: fs.readFileSync('/path/to/fullchain.crt'),
  minVersion: 'TLSv1.2'
};

https.createServer(options, app).listen(443);

Adım 3: Node.js HTTPS sunucunuzu başlatın

Uygulamayı başlatmak için aşağıdaki komutu çalıştırın:

node https_server.js

Uygulamanız artık trafiği HTTPS üzerinden sunuyor. Bir üretim ortamı için, otomatik olarak yeniden başlaması ve yeniden başlatmalardan sonra da çalışmaya devam etmesi için onu bir süreç yöneticisi (örneğin PM2 veya bir systemd hizmeti) altında çalıştırın.

Adım 4: SSL kurulumunuzu test edin

SSL checker araçlarımızdan birini kullanarak SSL kurulumunuzu olası hatalara veya güvenlik açıklarına karşı test edin. Zinciri komut satırından da doğrulayabilirsiniz:

echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates

Bu, sertifikanın yayıncısını ve geçerlilik tarihlerini yazdırarak Node.js sunucunuzun doğru sertifikayı sunduğunu doğrular.

Node.js için SSL sertifikası nereden alınır?

SSL Dragon, tüm SSL gereksinimleriniz için kaynağınızdır. Tüm SSL ürün yelpazemizde piyasadaki en düşük fiyatlardan bazılarını sunuyoruz ve güçlü güvenlik ile özel destek için sektördeki en iyi SSL markalarıyla ortaklık kurduk. Tüm SSL sertifikalarımız Node.js uygulamalarıyla tam uyumludur.

Hızlı verilme, güçlü şifreleme, %99,99 tarayıcı güveni, özel destek ve 25 gün içinde para iade garantisi.

Sıkça Sorulan Sorular

Node.js’de HTTPS’i nasıl etkinleştiririm?

Yerleşik https modülünü kullanın. Özel anahtarınızı ve full-chain sertifikanızı fs.readFileSync() ile okuyun, bunları key ve cert seçenekleri olarak https.createServer()‘ye geçirin ve .listen(443)‘i çağırın. Node.js, TLS el sıkışmasını sizin için yönetir; ayrıca yapılandırılacak farklı bir web sunucusu yoktur.

Node.js’de ca seçeneğine ihtiyacım var mı?

Ara sertifika zincirinin sunulması gerekir, ancak bunu yapmak için ca seçeneğine mutlaka gerek yoktur. En basit yaklaşım, alan adı sertifikanızı ve CA paketinizi tek bir full-chain dosyasında birleştirmek ve cert‘i buna işaret ettirmektir. ca dizisini yalnızca sertifikayı ve ara sertifikaları ayrı dosyalarda tutmayı tercih ediyorsanız kullanın.

Node.js sunucum 443 portuna neden bağlanamıyor?

Linux ve macOS’ta 1024’ün altındaki portlar ayrıcalıklıdır. Doğrudan 443 portuna bağlanmak yükseltilmiş izinler gerektirir; bu nedenle birçok kurulum, TLS’i sonlandıran veya ileten bir ters proxy (Nginx veya bir yük dengeleyici) arkasında 8443 gibi yüksek bir portta Node.js çalıştırır. Geliştirme için, sadece listen()‘e geçirilen değeri değiştirmeniz yeterlidir.

HTTPS sunucusu için require yerine import kullanabilir miyim?

Evet. CommonJS (require) desteklenen her Node.js sürümünde çalışır, ancak projeniz bir ES modülü olarak yapılandırılmışsa (package.json içinde “type”: “module” veya bir .mjs dosyası), bunun yerine import https from ‘node:https’ kullanabilirsiniz. TLS seçenekleri her iki durumda da aynıdır.

SSL sertifikasının Node.js’de çalıştığını nasıl kontrol ederim?

Sitenizi bir tarayıcıda açın ve kilit simgesini kontrol edin, SSL checker araçlarımızdan biriyle test edin veya terminalden echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com komutuyla sorgulayarak sunucunun sunduğu sertifikayı inceleyin.

Sonuç olarak

Node.js’e SSL sertifikası kurmak, bir full-chain sertifika oluşturmaya, bunu ve özel anahtarınızı fs.readFileSync() ile okumaya, bunları minVersion: ‘TLSv1.2’ ile https.createServer()‘a geçirmeye ve uygulamayı node https_server.js ile başlatmaya dayanır.

Önce bir sertifikaya mı ihtiyacınız var? SSL sertifikalarımıza göz atın.

Bugün SSL Dragon’dan sipariş vererek SSL Sertifikalarında %10 indirimden yararlanın!

Hızlı düzenleme, güçlü şifreleme, %99,99 tarayıcı güvenilirliği, özel destek ve 25 günlük para iade garantisi. Kupon kodu: SAVE10

A detailed image of a dragon in flight
Tarafından yazıldı

SSL Sertifikaları konusunda uzmanlaşmış deneyimli içerik yazarı. Karmaşık siber güvenlik konularını açık, ilgi çekici içeriğe dönüştürmek. Etkili anlatımlar yoluyla dijital güvenliğin geliştirilmesine katkıda bulunun.