Cara Install SSL di Tengine – Tutorial ini merupakan lanjutan dari tutorial sebelumnya yaitu Cara Install Tengine, PHP, MySQL, WordPress di Ubuntu 20.04. Jadi, jika anda belum membaca artikel tersebut, sebaiknya baca terlebih dahulu. Karena, tutorial yang akan saya buat kali ini ada hubungannya dengan tutorial sebelumnya.
Untuk cara install ssl di tengine memang caranya sedikit rumit. Karena installer certbot let’s encrypt belum mendukung untuk software tengine. Oleh karena itu, disini kita akan melakukan installasi SSL Let’s Encrypt secara manual.
Jadi, step by step nya adalah sebagai berikut:
- Install Certbot
- Generate cert manual
- Verifikasi domain
- Setup konfigurasi virtualHost tengine
Cara Install SSL Let’s Encrypt di Tengine
Install Certbot
snap install core; sudo snap refresh core
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
Untuk lets encrypt sendiri belum mendukun auto-installer untuk tengine. Jadi, kita akan generate ssl sertificate secara manual. Ganti email dan domain sesuai domain anda.
certbot certonly --manual --agree-tos -m fikry.dome10@gmail.com -d dev.tutorialpedia.net
Apabila muncul TOS (Terms of Agreement) klik Y
Berikutnya, kita diwajibkan untuk memverifikasi kepemilikan domain. Mohon perhatikan gambar ini baik-baik.
buat folder acme di root direktori domain anda. Sesuaikan root direktori domain anda pada contoh ini saya meletakkan root direktori website di /usr/local/nginx/html
mkdir -p /usr/local/nginx/html/.well-known/acme-challenge/
lalu buat file sesuai dengan caption “ini nama file” pada gambar diatas.
touch /usr/local/nginx/html/.well-known/acme-challenge/IK3-RcPyi3a6SffERLrEIPTN3ISsDbLYLzAt6dZv8AU
Masukkan kode verifikasinya ke file tersebut.
echo 'IK3-RcPyi3a6SffERLrEIPTN3ISsDbLYLzAt6dZv8AU.xvsatngufzf7O2jSUIBpAg6NKLzkhWGWsjn358kY1MY' > /usr/local/nginx/html/.well-known/acme-challenge/IK3-RcPyi3a6SffERLrEIPTN3ISsDbLYLzAt6dZv8AU
Jika sudah, klik Continue
Jika berhasil maka ssl akan ke generate di /etc/letsencrypt/live/{namadomain}.
Berhubung kita melakukan generate ssl secara manual, Jadi kita harus melakukan konfigurasi virtual host tenginenya secara manual.
Karena tutorial ini adalah tutorial dari artikel sebelumnya, jadi saya menggunakan sample virtual host artikel sebelumnya.
Virtual Host tengine tanpa SSL
user www-data;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
server {
listen 80;
root /usr/local/nginx/html/; #lokasi file website anda
server_name dev.tutorialpedia.net; #nama domain anda
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
#konfigurasi PHP
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_cache_valid 200 60m;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Untuk mengaktifkan SSL letakkan kode berikut di server block
listen 443 ssl;
server_name tengine.tutorialpedia.net;
ssl_certificate /etc/letsencrypt/live/dev.tutorialpedia.net/cert.$
ssl_certificate_key /etc/letsencrypt/live/dev.tutorialpedia.net/pr$
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
server {
if ($host = dev.tutorialpedia.net) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name dev.tutorialpedia.net;
return 404;
Final Result
user www-data;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
server {
listen 443 ssl;
root /usr/local/nginx/html/; #lokasi file website anda
server_name dev.tutorialpedia.net; #nama domain anda
ssl_certificate /etc/letsencrypt/live/dev.tutorialpedia.net/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/dev.tutorialpedia.net/privkey.pem;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
#konfigurasi PHP
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_cache_valid 200 60m;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
if ($host = dev.tutorialpedia.net) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name dev.tutorialpedia.net;
listen 80;
return 404;
}
}
Sebelum apply configuration, sebaiknya test terlebih dahulu konfigurasi yang sudah dibuat tadi.
nginx -t
Jika succesful Reload konfigurasi tengine
nginx -s reload
Sekarang coba akses halaman website anda, Pada contoh artikel ini saya coba di dev.tutorialpedia.net, Maka hasilnya seperti berikut:
Protokol website anda sudah menjadi HTTPS.