Setelah sebelumnya kita mencoba memanfaatkan fasilitas SSL dengan web server Apache, kali ini kita akan melakukan konfigurasi SSL dengan Nginx. Tulisan ini dibuat untuk memandu langkah demi langkah yang perlu dilakukan untuk menggunakan SSL pada Nginx termasuk proses pembuatan Key Pair dan self signed certificate yang sedikit berbeda dengan SSL pada Apache.
Fasilitas komentar untuk artikel ini dimatikan, feedback dan error yang anda dapatkan saat menjalankan langkah-langkah yang diuraikan disini silahkan diutarakan melalui Forum Magnet http://forum.magnet-id.com/.
Pada contoh kasus ini mesin Linux menggunakan CentOS 64 bit. Studi kasus adalah menjalankan phpMyAdmin pada port HTTPS 443 dengan menggunakan Nginx. Prinsip yang sama dapat digunakan dengan operating system dan aplikasi web lainnya.
openssl
Pastikan bahwa mesin Linux anda telah terinstall dengan openssl; kita akan menggunakan openssl untuk mengenerate key pair dan self signed certificate.
yum install openssl
Create Keys, CSR (Certificate Signing Request) dan Certificates
Buat direktori temporer yang dapat anda hapus kemudian setelah semua proses dilakukan dengan sukses.
mkdir /root/temp cd /root/temp
Create private key, masukkan passphrase, passphrase ini akan kita hapus kemudian;
openssl genrsa -des3 -out pma.key 1024
Create CSR (Certificate Signing Request) dan masukkan informasi yang dibutuhkan, dianjurkan untuk memasukkan Common Name (CN) sesuai dengan nama server yang akan dilayani, calam contoh ini adalah pma.yourdomain.com.
openssl req -new -key pma.key -out pma.csr
Hapus passphrase yang kita masukkan sebelumnya, apabila hal ini tidak dilakukan maka kita diharuskan untuk memasukkan passphrase setiap mesin / web server anda di reboot.
cp pma.key pma.key.org openssl rsa -in pma.key.org -out pma.key
Create self signed digital certificate
openssl x509 -req -days 365 -in pma.csr -signkey pma.key -out pma.crt
Selanjutnya adalah memindahkan file certificate (crt) dan file key ke direktori yang akan dipanggil kemudian melalui konfigurasi Nginx, dalam kasus ini kita akan memindahkan ke direktori Nginx (cert), sesuaikan path dengan selera anda.
mkdir /usr/local/nginx/cert cp pma.crt pma.key /usr/local/nginx/cert
Konfigurasi Nginx
Berikut entry dari konfigurasi nginx bagian server { }, melalui konfigurasi ini kita akan melayani request ssl pada port 443.
server { listen pma.yourdomain.com:443; client_max_body_size 10M; index index.php; server_name pma.yourdomain.com; root /var/www/pma.yourdomain.com; ssl on; ssl_certificate /usr/local/nginx/cert/pma.crt; ssl_certificate_key /usr/local/nginx/cert/pma.key; location / { proxy_set_header X_FORWARDED_PROTO https; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect false; proxy_max_temp_file_size 0; } location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param HTTPS on; include /usr/local/nginx/conf/fastcgi_params; } }
References