Instalasi Sertifikat Let’s Encrypt Free SSL Wildcard pada Ubuntu 16/18

Beberapa hari yang lalu, saat mengakses salah satu blog milik saya, tiba-tiba saja muncul tulisan di halaman utama yang berbunyi, “Your connection is not Private. Attackers might be trying to steal your information from xxx.com (for example, passwords, messages, or credit cards) …..“, dengan gambar segitiga merah bertanda seru di dalamnya.

Setelah saya periksa, ternyata hal tersebut terjadi karena sertifikat SSL milik saya sudah kadaluarsa, sehingga Google melabeli blog saya tersebut sebagai situs yang tidak aman dan akan memperingatkan setiap orang yang akan mengaksesnya untuk berhati-hati.

Sertifikat sudah kadaluarsa
kadaluarsa

Sejak tahun 2017, Google memang sudah melakukan hal tersebut. Mereka melabeli sebuah website yang hanya menggunakan HTTP untuk melakukan transaksi seperti meminta password atau memasukkan nomor kartu kredit sebagai web yang tidak aman.

Guna membuat blog saya menjadi “aman” kembali, maka saya harus memperbarui sertifikat SSL milik blog saya. Dan kali ini pilihan jatuh kepada Let’s Encrypt Free SSL sebagai solusinya. Untuk yang belum tahu apa itu Let’s Encrypt, itu merupakan sebuah Open CA (Certification Authority) yang menjalankan layanannya untuk manfaat publik. Let’s Encrypt ini merupakan sebuah proyek yang dijalankan oleh Internet Security Research Group (ISRG).

Alasan terkuat saya menggunakan SSL dari Let’s Encrypt adalah karena GRATIS. Alasan kedua, Let’s Encrypt sudah mendukung Wildcard Certificate dengan menggunakan protokol ACME2, jadi sekali menerbitkan sertifikat (misal: untuk *.domain.kamu), saya bisa menggunakannya untuk semua subdomain yang saya miliki (misal: test.domain.kamu).

Dan berikut ini adalah tutorial untuk men-generate Wildcard Certificate dari Let’s Encrypt yang bisa saya bagikan untuk kalian, usai saya sukses memasangnya pada server milik saya

Alat dan Bahan

  • Ubuntu Server
  • Koneksi Internet
  • Akses ke CPanel dari domain kalian

Tahapan

  1. Install Certbot. Karena Certbot belum tersedia dalam repositori milik Ubuntu, maka kita perlu menambahkannya terlebih dahulu melalui terminal. Caranya:
    sudo add-apt-repository ppa:certbot/certbot

    Menambahkan repositori untuk certbot
  2. Setelah repositori berhasil ditambahkan, sekarang update paket-paket yang ada di Ubuntu. Caranya:
    sudo apt update

    apt update
  3. Setelah di-update, jalankan perintah berikut untuk memasang Certbot:
    sudo apt install certbot
    installing certbot

    *Pastikan kalian menggunakan certbot versi 0.22 atau di atasnya. Sebab versi certbot sebelum 0.22 tidak mendukung Wildcard Certificate.

  4. Certbot sudah terpasang, sekarang waktunya untukmen-generate sertifikatnya. Caranya:
    sudo certbot certonly --manual -d *.domain.kamu -d domain.kamu --agree-tos --no-bootstrap --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory

    Silakan ganti domain.kamu dengan alamat domain yang kalian miliki. Dalam contoh di atas, kita akan membuat sertifikat baik untuk *.domain.kamu dan domain.kamu

  5. Setelah menjalankan perintah di atas, kalian akan mendapatkan keluaran seperti berikut:
    01 --server https://acme-v02.api.letsencrypt.org/directory
    Saving debug log to /var/log/letsencrypt/letsencrypt.log
    Plugins selected: Authenticator manual, Installer None
    Enter email address (used for urgent renewal and security notices) (Enter 'c' to
    cancel): [email protected]
    Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
    
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    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: Y
    Starting new HTTPS connection (1): supporters.eff.org
    Obtaining a new certificate
    Performing the following challenges:
    dns-01 challenge for domain.kamu
    dns-01 challenge for domain.kamu

    Pada keterangan di atas, kalian diminta untuk memasukkan alamat email dan  kemudian certbot akan memberikan challenge kepada domain kalian.

  6. Challenge yang diberikan adalah seperti berikut:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Please deploy a DNS TXT record under the name
    _acme-challenge.domain.kamu with the following value:
    
    TKP7RYKPlALs-j6rfFtu-MLhUdkbjQ5sntpY_zL6odg
    
    Before continuing, verify the record is deployed.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Press Enter to Continue

     

    challenge yang diberikan

    Pada tahap ini, kalian harus membuat sebuah DNS Text Record dengan nama _acme-challenge yang berisi karakter acak yang ada di atas. Kalian harus menunggu beberapa menit sebelum DNS Record tersebut terpropagasi.

  7.  Bila gagal, kalian akan mendapatkan keluaran seperti berikut:
    Press Enter to Continue
    Waiting for verification...
    Resetting dropped connection: acme-v02.api.letsencrypt.org
    Cleaning up challenges
    Failed authorization procedure. domain.kamu (dns-01): urn:ietf:params:acme:error:unauthorized :: The client lacks sufficient authorization :: Incorrect TXT record "TKP7RYKPlALs-j6rfFtu-MLhUdkbjQ5sntpY_zL6odg" found at _acme-challenge.domain.kamu
    
    IMPORTANT NOTES:
     - The following errors were reported by the server:
    
       Domain: domain.kamu
       Type:   unauthorized
       Detail: Incorrect TXT record
       "TKP7RYKPlALs-j6rfFtu-MLhUdkbjQ5sntpY_zL6odg" found at
       _acme-challenge.domain.kamu
    
       To fix these errors, please make sure that your domain name was
       entered correctly and the DNS A/AAAA record(s) for that domain
       contain(s) the right IP address.
     - Your account credentials have been saved in your Certbot
       configuration directory at /etc/letsencrypt. You should make a
       secure backup of this folder now. This configuration directory will
       also contain certificates and private keys obtained by Certbot so
       making regular backups of this folder is ideal.
    verifikasi gagal

    Kegagalan ini kemungkinan terjadi karena DNS Record tersebut belum terpropagasi, tapi kalian sudah menekan tombol continue atau juga bisa disebabkan IP dari domain yang kalian masukkan tidak ditemukan. Kalau sudah gagal seperti ini, silakan ulangi kembali prosesnya dari awal.

  8. Sedangkan yang berhasil, keluarannya adalah seperti berikut:
    Press Enter to Continue
    Waiting for verification...
    Cleaning up challenges
    
    IMPORTANT NOTES:
    - Congratulations! Your certificate and chain have been saved at:
    /etc/letsencrypt/live/domain.kamu/fullchain.pem
    Your key file has been saved at:
    /etc/letsencrypt/live/domain.kamu/privkey.pem
    Your cert will expire on 2020-03-03. To obtain a new or tweaked
    version of this certificate in the future, simply run certbot
    again. To non-interactively renew *all* of your certificates, run
    "certbot renew"
    - If you like Certbot, please consider supporting our work by:
    
    Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
    Donating to EFF: https://eff.org/donate-le

    verifikasi berhasil dan sertifikat berhasil digenerate
  9. Selamat, sertifikat tersebut telah berhasil digenerate. Sekarang kalian bisa menggunakan Wildcard Certificate itu untuk semua subdomain dari domain yang kalian punya.
  10. Sekarang kalian bisa mengkonfigurasi secara manual path sertifikat tersebut ke dalam Webserver kalian. Seperti ini contohnya:
    <VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/domainkamu/public_html
    
    serverName test.domain.kamu
    
    Redirect permanent / https://test.domain.kamu/
    </VirtualHost>
    
    <VirtualHost _default_:443>
    ServerAdmin [email protected]
    DocumentRoot /var/www/domainkamu/public_html
    
    serverName test.domain.kamu
    
    
    SSLEngine On
    
    ErrorLog ${APACHE_LOG_DIR}/domainkamu_ssl-error.log
    CustomLog ${APACHE_LOG_DIR}/domainkamu_ssl-access.log combined
    
    
    SSLCertificateFile /etc/letsencrypt/live/domain.kamu/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/domain.kamu/privkey.pem
    
    
    <FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
    SSLOptions +StdEnvVars
    </Directory>
    
    <Directory /var/www/domainkamu/public_html/>
    Options -Indexes +FollowSymLinks
    AllowOverride All
    Require all granted
    </Directory>
    </VirtualHost>
  11. Untuk mengujicoba konfigurasi di atas, jalankan perintah berikut:
    sudo apache2ctl configtest
  12. Jika hasilnya sudah sukses, silakan restart service apahce dengan perintah:
    sudo service apache2 restart

    configtest dan restart apache
  13. Sekarang akses kembali website kalian dan sertifikat kini sudah diperbarui. Tidak ada lagi peringatan dari Google

    Sertifikat berhasil diperbarui

Catatan

  • Masa aktif sertifikat keluaran dari Let’s Encrypt adalah 3 bulan.
  • Untuk memperbarui semua sertifikat kalian, jalankan perintah “certbot renew”.
  • Untuk memverifikasi apakah DNS Record kalian sudah aktif, kalian bisa memasukkan URL berikut di browser kalian:
    sslforfree.com/create?dns_txt_verify=_acme-challenge.domain.kamu

    Verifikasi DNS Record
Please follow and like my page:
error0
fb-share-icon4673
Tweet 419
fb-share-icon20

Leave a Reply

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