Tutorial SSL Gratis Let’s Encrypt di Ubuntu 16.04 + Nginx (Digitalocean)

Sebelum melakukan langkah di bawah ini pastikan situs Anda sudah bisa diakses lewat http, jika belum bisa cara mengaturnya bisa ikuti panduan Konfigurasi LEMP (Linux Ubuntu 16.04 + Nginx + MySQL 5.7 + PHP 7)

1. Install Let’s Encrypt

Langkah ini hanya perlu dilakukan 1x untuk tiap server/droplet. Jika anda sudah pernah memasang sertifikat ssl dan ingin memasang sertifikat untuk domain lain, langkah ini bisa dilewati.

Update package list

apt-get update

Install Let’s encrypt

apt-get install letsencrypt

2. Generate SSL Certificate

letsencrypt certonly -a webroot --webroot-path=/var/www/www.kenc0ur.com -d kenc0ur.com -d www.kenc0ur.com

* ganti /var/www/www.kenc0ur.com dengan path root domain anda
* ganti kenc0ur.com dan www.kenc0ur.com dengan domain anda
* Setelah berhasil maka akan muncul pemberitahuan seperti di bawah ini, catat folder sertifikat sslnya.

Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/kenc0ur.com/fullchain.pem. Your cert will
expire on 2017-05-09. To obtain a new version of the certificate in
the future, simply run Let’s Encrypt again.

Catat folder sertificat ssl tersebut

3. Generate Diffie-Hellman parameter for DHE ciphersuites

Langkah ini hanya perlu dilakukan 1x untuk tiap server/droplet. Jika anda sudah pernah menggenerate Diffie-Hellman parameter sebelumnya, langkah ini bisa dilewati.

openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

* Proses ini butuh waktu beberapa menit, tunggu saja

4. Edit Virtual Host

nano /etc/nginx/sites-available/www.kenc0ur.com

* ganti www.kenc0ur.com sesuai dengan file v-host yang kamu buat sebelumnya

ganti port 80 menjadi 443 ssl http2.
Sebelumnya:

listen 80;
listen [::]:80;

Ganti menjadi:

listen 443 ssl http2;
listen [::]:443 ssl http2;

tambahkan kode ini di luar bracket server:

server {
       listen         80;
       listen    [::]:80;
       server_name    www.kenc0ur.com;
       return         301 https://$server_name$request_uri;
}

Tambahkan kode ini di dalam braket server utama:

ssl_certificate /etc/letsencrypt/live/kenc0ur.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/kenc0ur.com/privkey.pem;
ssl_dhparam  /etc/ssl/certs/dhparam.pem;

* ganti /etc/letsencrypt/live/kenc0ur.com/ sesuai dengan folder ssl certificate yang keluar di langkah 2

Secara keseluruhan, lihat perbandingan kedua v-host dibawah ini, sebelum dan sesudah diedit.

Sebelum diedit:

server {
	server_name  kenc0ur.com;
	rewrite ^(.*) http://www.kenc0ur.com$1 permanent;
}

server {
	server_name www.kenc0ur.com;
	listen 80;
	listen [::]:80;
	root /var/www/www.kenc0ur.com;
	index index.html index.htm index.nginx-debian.html index.php;
	location / {
		try_files $uri $uri/ /index.php?q=$uri&$args;
	}

	location ~ \.php$ {
		include /etc/nginx/fastcgi_params;
		include snippets/fastcgi-php.conf;
		fastcgi_buffers 8 256k;
		fastcgi_buffer_size 128k;
		fastcgi_intercept_errors on;
		include fastcgi_params;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_pass unix:/run/php/php7.0-fpm.sock;
	}

	location ~* \.(css|js|png|jpg|jpeg|gif|ico)$ {
		expires 1w;
	}

	location ~ /\.ht {
	  deny all;
	 }
}

Sesudah diedit (lihat baris yang ditandai untuk melihat bagian yang telah diedit)

server {
	server_name  kenc0ur.com;
	rewrite ^(.*) http://www.kenc0ur.com$1 permanent;
}

server {
       listen         80;
       listen    [::]:80;
       server_name    www.kenc0ur.com;
       return         301 https://$server_name$request_uri;
}

server {
	server_name www.kenc0ur.com;
	listen 443 ssl http2;
	listen [::]:443 ssl http2;
	ssl_certificate /etc/letsencrypt/live/kenc0ur.com/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/kenc0ur.com/privkey.pem;
	ssl_dhparam  /etc/ssl/certs/dhparam.pem;
	root /var/www/www.kenc0ur.com;
	index index.html index.htm index.nginx-debian.html index.php;
	location / {
		try_files $uri $uri/ /index.php?q=$uri&$args;
	}

	location ~ \.php$ {
		include /etc/nginx/fastcgi_params;
		include snippets/fastcgi-php.conf;
		fastcgi_buffers 8 256k;
		fastcgi_buffer_size 128k;
		fastcgi_intercept_errors on;
		include fastcgi_params;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_pass unix:/run/php/php7.0-fpm.sock;
	}

	location ~* \.(css|js|png|jpg|jpeg|gif|ico)$ {
		expires 1w;
	}

	location ~ /\.ht {
	  deny all;
	 }
}

5. Edit File nginx.conf

nano /etc/nginx/nginx.conf

Cari code ssl_prefer_server_ciphers on; lalu tambahkan code ini di bawahnya:

ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_session_cache shared:SSL:5m;
ssl_session_timeout 1h;

6. Retart Nginx

service nginx restart

Leave a Reply

Your email address will not be published. Required fields are marked *