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:
- CSR Oluşturucu aracımızı kullanarak CSR’ı otomatik olarak oluşturun.
- Node.js’de CSR nasıl oluşturulur adlı adım adım eğitimimizi takip edin.
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
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.
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.
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.
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.
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


