Cara Install Let’s Encrypt SSL (HTTPS) dengan Apache di CentOS 7
Sebelumnya saya sudah membahas tentang apa itu SSL, cara install HTTPS di localhost untuk kebutuhan development dengan menggunakan web server Apache dan Nginx. Kemudian beberapa teman-teman komunitas di Facebook bertanya bagaimana cara konfigurasi HTTPS di server yang sudah online atau production server? Nah, di tutorial ini saya membahas HTTPS dengan Apache web server di CentOS 7. Untuk tutorial Let’s Encrypt dengan Nginx baca di sini.
Tentang Let’s Encrypt
Dulu untuk mendapatkan sertifikat SSL, kita harus membeli dari Certificate Authority dan memperbarui sertifikat SSL jika masa berlaku telah habis. Sekarang sudah ada Let’s Encrypt yang memberikan sertifikat SSL gratis level Domain Validation yang belaku selama 90 hari.
Let’s Encrypt adalah organisasi non profit yang didirikan dengan tujuan agar website yang ada di dunia ini seluruhnya bisa menjadi aman. Sumber pendanaan untuk Let’s Encrypt berasal dari sponsor dan donasi berbagai perusahaan teknologi dunia seperti Mozilla, Cisco, EFF, Chrome, Facebook, Automattic, Vultr, Digitalocean, dan masih banyak lagi.
Kalau website berada di shared hosting, pada umumnya control panel hosting seperti cPanel sudah mendukung sertifikat SSL Let’s Encrypt. Hanya membutuhkan beberapa klik di cPanel, website kita sudah menggunakan SSL Let’s Encrypt.
Berbeda kalau berada di VPS atau dedicated server, kita harus melakukan instalasi dan konfigurasi Let’s Encrypt beserta web server.
0. Perangkat yang Digunakan
Perangkat yang digunakan pada tutorial ini:
1. Install Let’s Encrypt untuk Apache
Diasumsikan virtualhost untuk domain linus.cf sudah aktif dan dapat diakses dengan baik.
Install EPEL repository
1 | # yum install epel-release |
Install modul SSL Apache dan certbot untuk Apache
1 | # yum install mod_ssl python-certbot-apache |
2. Meminta Sertifikat SSL dari Let’s Encrypt
Selanjutnya meminta sertifikat SSL untuk domain linus.cf.
1 | # certbot --apache -d linus.cf -d www.linus.cf |
Masukkan alamat email untuk notifikasi sertifikat SSL yang akan habis masa berlakunya.
1 2 | Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): hai@musaamin.web.id |
Setujui ToS
1 2 3 4 5 6 | Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A |
Jawab Y untuk mendapatkan informasi mengenai proyek Let’s Encrypt.
1 2 3 4 5 6 | Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: N |
Sertifikat SSL mulai dibuat
1 2 3 4 5 | Obtaining a new certificate Performing the following challenges: http-01 challenge for linus.cf http-01 challenge for www.linus.cf Waiting for verification... |
Membuat virtualhost dengan SSL.
1 2 3 4 | Created an SSL vhost at /etc/httpd/sites-available/linus.cf-le-ssl.conf Deploying Certificate to VirtualHost /etc/httpd/sites-available/linus.cf-le-ssl.conf Enabling site /etc/httpd/sites-available/linus.cf-le-ssl.conf by adding Include to root configuration Deploying Certificate to VirtualHost /etc/httpd/sites-available/linus.cf-le-ssl.conf |
Jawab 2, semua permintaan HTTP dialihkan ke HTTPS. certbot akan mengubah konfigurasi VirtualHost Apache.
1 2 3 4 5 6 7 8 | Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 |
Sertifikat SSL sudah aktif dan dapat diuji menggunakan ssllabs.com.
1 2 3 4 5 6 | Congratulations! You have successfully enabled https://linus.cf and https://www.linus.cf You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=linus.cf https://www.ssllabs.com/ssltest/analyze.html?d=www.linus.cf |
3. Memeriksa Konfigurasi VirtualHost Apache
Memeriksa perubahan yang dilakukan oleh certbot terhadap file konfigurasi VirtualHost Apache.
File linus.cf.conf. Bertambah opsi RewriteEngine, RewriteCond, dan RewriteRule.
1 2 3 4 5 6 7 8 9 10 11 | <VirtualHost *:80> ServerName linus.cf ServerAlias www.linus.cf DocumentRoot /var/www/html/linus.cf ErrorLog /var/log/httpd/linus.cf.error.log CustomLog /var/log/httpd/linus.cf.requests.log combined RewriteEngine on RewriteCond %{SERVER_NAME} =linus.cf [OR] RewriteCond %{SERVER_NAME} =www.linus.cf RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost> |
certbot juga membuat file baru linus.cf-le-ssl.conf yang merupakan konfigurasi virtualhost untuk port 443 (HTTPS) dan berisi opsi pemanggilan file sertifikat SSL.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <IfModule mod_ssl.c> <VirtualHost *:443> ServerName linus.cf ServerAlias www.linus.cf DocumentRoot /var/www/html/linus.cf ErrorLog /var/log/httpd/linus.cf.error.log CustomLog /var/log/httpd/linus.cf.requests.log combined Include /etc/letsencrypt/options-ssl-apache.conf SSLCertificateFile /etc/letsencrypt/live/linus.cf/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/linus.cf/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/linus.cf/chain.pem </VirtualHost> </IfModule> |
4. Pengujian SSL / HTTPS
Selanjutnya menguji apakah SSL sudah terpasang dengan baik.
a. Cara Pertama: Mengakses domain melalui web browser
Domain harus dapat diakses menggunakan HTTPS dan harus secara otomatis dialihkan dari HTTP ke HTTPS.
b. Cara Kedua: Menguji Rating Sertifikat SSL
Pengujian dilakukan menggunakan layanan dari SSLLabs.com.
5. Memperbarui Sertifikat SSL Secara Otomatis
Sertifikat SSL dari Let’s Encrypt hanya berlaku selama 90 hari dan harus diperbarui secara berkala. Kita dapat menggunakan crontab atau cronjob untuk menjalankan perintah memperbarui sertifikat SSL secara otomatis.
Masuk modifikasi crontab
1 | # crontab -e |
Buat penjadwalan untuk certbot. Menjalankan perintah memperbarui sertifikat SSL setiap hari pada jam 01.00.
1 | 00 1 * * * /usr/bin/certbot renew --quiet |
Selamat mencoba 🙂
Pak Musa Amiin , Terima Kasih Banyak atas tutorialnya ya . ini sangat membantu saya dalam setup ssl di vps saya , karena vps saya tidak menggunakan web panel ,heheheh