Cara Install SSL Let’s Encrypt di Tengine

0
6785

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.

cara install ssl

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

cara install ssl

Jika berhasil maka ssl akan ke generate di /etc/letsencrypt/live/{namadomain}.

cara install ssl

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.

 

Leave A Reply

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.