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

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

Posted in : Install on by : kenc0ur Tags: , , , , ,

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
[code]apt-get update[/code]

Install Let’s encrypt
[code]apt-get install letsencrypt[/code]

2. Generate SSL Certificate

[code]letsencrypt certonly -a webroot –webroot-path=/var/www/www.kenc0ur.com -d kenc0ur.com -d www.kenc0ur.com[/code]
* 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.

[code]openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048[/code]
* Proses ini butuh waktu beberapa menit, tunggu saja

4. Edit Virtual Host

[code]nano /etc/nginx/sites-available/www.kenc0ur.com[/code]
* ganti www.kenc0ur.com sesuai dengan file v-host yang kamu buat sebelumnya

ganti port 80 menjadi 443 ssl http2.
Sebelumnya:
[code]listen 80;
listen [::]:80;[/code]
Ganti menjadi:
[code]listen 443 ssl http2;
listen [::]:443 ssl http2;[/code]

tambahkan kode ini di luar bracket server:
[code]server {
listen 80;
listen [::]:80;
server_name www.kenc0ur.com;
return 301 https://$server_name$request_uri;
}[/code]

Tambahkan kode ini di dalam braket server utama:
[code]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;[/code]
* 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:

[code]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;
}
}[/code]

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

[code highlight=”6,7,8,9,10,11,15,16,17,18,19″]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;
}
}[/code]

5. Edit File nginx.conf

[code]nano /etc/nginx/nginx.conf[/code]

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

[code]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;[/code]

6. Retart Nginx

[code]service nginx restart[/code]

Leave a Reply

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