
Merhabalar, NodeJS derslerimize kaldığımız yerden devam ediyoruz. Bu dersimizde NodeJS ile https server oluşturmayı anlatacağım. Hadi başlayalım !
Bir web sitesinin HTTPS olarak açılması için öncelikle SSL sertifikasına sahip olması gerekiyor. Canlı ortamda sunucunun sağladığı sertifikalar yada ücretli/ücretsiz sertifikalar ile yapılabiliyor fakat local ortamda işler biraz değişik. Şöyle ki; öncelikle OpenSSL adlı programı indirmeniz gerekiyor. Bu program ve programın geliştiricileri aslında SSL sertifikasınında geliştiricileri. Yani aslında örneğin bir sunucu size sertifika veriyorsa onlarda OpenSSL ile sertifika oluşturuyor ve size veriyordur 🙂 Öncelikle OpenSSL indirelim. Linux işletim sistemli bilgisayarlarda OpenSSL kurmak için terminal ekranından
sudo apt install libssl-dev
komutunu girerek indirebilir ve kurabilirsiniz.
Windows’ta ise iş biraz daha uzun 🙂 Öncelikle buraya tıklayarak indirelim. Ardından tipik Windows’a program kurulunda olduğu gibi Next Next Next Finish yaparak OpenSSL programını bilgisayarımıza kuralım ve OpenSSL’in kurulduğu dizini (kurulum esnasında değiştirmediyseniz C:\Program Files\OpenSSL-Win64\bin yolunu) ortam değişkenlerine ekleyelim. Bu işlemin ardından CMD’den openssl komutunu kullanabileceğiz.
OpenSSL kurduktan sonra bundan sonraki işlemleri işletim sistemi farketmeksizin yapabiliriz. Bundan sonra bir tane NodeJS projesi oluşturalım. Bunun için proje oluşturmak istediğimiz klasöre terminal ile geçerek
npm init --yes
komutunu girelim ve projenin oluşturulmasını bekleyelim. Ardından OpenSSL aracılığıyla bir tane SSL sertifikası oluşturalım. Bunun için yine terminal ekranından sırasıyla
openssl req -new -newkey rsa:2048 -nodes -keyout domain.com.key -out domain.com.csr
openssl x509 -req -days 365 -in domain.com.csr -signkey domain.com.key -out domain.com.crt
komutlarını çalıştıralım. Komutlarda yer alan domain.com yerine kendi domain adresinizi yazabilirsiniz. Evet OpenSSL ile işimiz bitti artık geçelim NodeJS tarafına.
Öncelikle sanal sunucu oluşturmak için express paketini kuralım. Bunun için terminal ekranından
npm i express
komutunu çalıştıralım ve express paketinin kurulmasını bekleyelim. Express paketinin kurulmasının ardından sunucuyu ayağa kaldıracağımız Javascript dosyasında express ve https paketlerini çağıralım. Ayrıca OpenSSL komutlarının ardından oluşturulan sertifika dosyalarını okuyabilmek için fs paketini de çağırmamız gerekecek. Yani Javascript dosyasının başına
const https = require('https');
const app = require('express')();
const fs = require('fs');
satırlarını yazalım.
Şimdi OpenSSL komutlarıyla oluşturulan sertifika dosyalarını okuyarak bunları bir obje altında toplama zamanı. Bunun için
const options = {
key: fs.readFileSync('domain.com.key'),
cert: fs.readFileSync('domain.com.crt')
};
değişkenini oluşturuyoruz. Örneğin sunucunun root dizinine (/ dizini) gelen istekleri express ile karşılayalım ve tarayıcı ekranına Hello World ! yazalım.
app.get('/', (req, res) => res.end('Hello World !'));
Son olarak sayfada içeri aldığımız https paketini kullanarak sunucuyu ayağa kaldırarak işlemlerimizi tamamlayalım.
https.createServer(options, app).listen(3000);
Bu kod satırında https.createServer() fonksiyonu ile sunucuyu oluşturduk ve bu fonksiyona options ve app değişkenlerini göndererek öncelikle SSL sertifikası bilgilerini, sonrasında da sunucuyu Express ile yöneteceğimizi belirttik. Son olarak listen(3000) ile sunucunun 3000 portunda çalışacağını belirttik ve işlemlerimizi tamamladık. Ben örnek olması açısından 3000 portunu kullandım fakat siz istediğiniz portu kullanabilirsiniz.
Eveett işlemlerimizi tamamladık, test etmek için tarayıcıyı (Google Chrome, Opera, Mozilla Firefox vs) açarak localhost:3000 adresine gidelim. Ekranda Hello World ! yazısını gördüğümüz takdirde sunucu sağlıklı bir şekilde çalışıyor ve herşey tamam demektir.
Eveett tüm işlemlerimiz tamamlandı ve yazımızda sonlandı. Tüm NodeJS yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.