|

Cara install Let’s Encrypt

Ingin mendapatkan sertifikat SSL gratis untuk semua website anda? Maka Let’s Encrypt adalah jawabannya. 🙂 Sudah lama saya mengetahui adanya Certificate Authority ini tapi belum membuatkan tutorialnya karena masih dalam versi beta. Nah.. akhirnya sekarang sudah masuk ke versi stabil dan ternyata memang ada perbedaan instalasinya.

Instalasi Let’s Encrypt

Bagaimana cara instalasi Let’s Encrypt? Agak kurang intuitif tapi kita perlu memanfaatkan <a href="https://certbot.eff.org/" target="_blank">certbot</a> dari EFF (Electronic Frontier Foundation). Mudahnya langsung saja eksekusi perintah berikut untuk mengotomatiskan instalasinya, saya bedakan menurut distro Linux dan lainnya.

  • Debian 8 Jessie:
    apt-get install certbot -t jessie-backports
  • Ubuntu 16.04
    apt-get install letsencrypt 
  • CentOS 7
    yum install epel-release
    yum install certbot

Bisa dilihat bahwa paket aplikasi certbot/Let’s Encrypt cuma ada pada distro Linux terbaru saat ini.

Lainnya:

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto

Kalau muncul pesan error seperti ini:

--2016-06-22 18:38:50--  https://dl.eff.org/certbot-auto
Resolving dl.eff.org (dl.eff.org)... 173.239.79.196
Connecting to dl.eff.org (dl.eff.org)|173.239.79.196|:443... connected.
ERROR: cannot verify dl.eff.org's certificate, issued by '/C=US/O=Let\'s Encrypt/CN=Let\'s Encrypt Authority X3':
  Unable to locally verify the issuer's authority.
To connect to dl.eff.org insecurely, use `--no-check-certificate'.

Maka anda bisa menjalankan perintahnya seperti ini:

wget https://dl.eff.org/certbot-auto --no-check-certificate

Atau solusi permanen:

apt-get install ca-certificates

Menggunakan Let’s Encrypt

Tahap selanjutnya tentulah menggunakan aplikasinya untuk mendapatkan sertifikat SSL untuk nama domain yang diinginkan.
Debian 8 dan CentOS 7:

certbot certonly

Ubuntu 16.04

letsencrypt certonly

Untuk Lainnya:

./certbot-auto certonly

Nanti anda tinggal memilih akan dipasangkan pada lokasi root web server apa (Apache, Nginx) atau dibuat mandiri (standalone). Kemudian mengisikan alamat email untuk pemulihan misal ada masalah dikemudian hari. Dan isikan nama domainnya, bisa lebih dari satu kok. Oh ya pastikan A record dari nama domainnya sudah mengarah ke alamat IP servernya, kalau tidak akan gagal nanti prosesnya.

Memperpanjang sertifikat SSL secara otomatis

Bedanya dengan sertifikat SSL lain adalah masa berlakunya cuma 90 hari dan ini memang disengaja. Supaya para penggunanya mengotomatiskan proses renewal. Dan memanfaatkan certbot itu merupakan hal yang mudah kok.

Debian 8 dan CentOS 7:

certbot renew --quiet

Ubuntu

letsencrypt renew --quiet

Untuk distro Lainnya

./certbot-auto renew --quiet

Tutorial ini fungsinya hanya untuk mengenalkan saja dan memang agak minim pada detailnya. Tapi jangan takut dulu, serius sangatlah mudah asalkan anda tahu web server apa yang digunakan, lokasi – lokasi konfigurasi dan virtual hostnya, juga distro yang digunakan. Sisanya akan diotomatiskan oleh certbot. Semisal kurang jelas silahkan ditanyakan dalam komentar atau bisa minta tutorial yang lebih mendalam untuk Let’s Encrypt. 🙂

63 Comments

    1. Betul mbak, untuk Let’s Encrypt selamanya gratis asalkan ga lupa perpanjangnya. Makanya dimasukkan dalam cronjob supaya terjadwal otomatis prosesnya.

    1. Hmm… Aslinya ini cuma masalah preferensi pakai www atau non-www. Dari sisi implementasi di web servernya tidak ada bedanya kok. Buat saya karena lebih singkat URLnya mbak.

    1. Setelah install certbot ya mbak, eksekusi perintah ini:

      ./certbot-auto renew --quiet

      Saran saya sih… nanti dulu mbak pasang SSLnya, target pertama web servernya sudah berjalan normal dan dicoba hosting website.

    1. Hmm… lain sih mbak fungsinya. Kalau HTTPS itu fungsinya untuk enkripsi komunikasi datanya, jadi tidak bisa disadap atau dibajak atau dimodifikasi pihak lain.

      Kalau masalah VPS dihack itu urusannya ke server hardening atau pengamanan.

    1. Wogh… mantap mbak. 🙂

      Integrasi Let’s Encrypt yang otomatis bisa pakai script ini mbak: https://github.com/interbrite/letsencrypt-vesta

      Atau bisa pakai sertifikat SSL gratis biasa dari WoSign: https://buy.wosign.com/free/

      Tapi saran saya mbak jangan bingung HTTPS dulu, biasakan menggunakan VestaCP dan coba hosting dulu satu situs didalamnya. Kalau terlalu banyak hal yang dicoba dalam waktu bersamaan nanti malah bingung mbak pas ada masalah mau ngawali darimana.

  1. iya mas repot juga pake vestacp ga seperti cpanel,.. klao servernesia pake panel apa mas,… qhu udh berhasil install https tinggal build wp dll…

    1. Untuk blog ini saya pakai OpenLiteSpeed mbak, panelnya cuma buat setting web server. Selain satu lagi pakai VestaCP yang lainnya murni tanpa panel, menghemat resource VPS soalnya.

    1. Warnanya kuning ada tanda seru mbak? Atau warna putih polos biasa? Berarti masalah mixed content, jadi kalau mau pakai HTTPS dan gemboknya hijau maka seluruh konten (gambar, js, css, dan sebagainya) harus pakai HTTPS juga.

  2. saya uda coba pasang mas Lets Encrypt-nya
    semua bisa sie mas sesuai petunjuknya.
    cara ngecek berhasil atau gak instalasinya gimana ya caranya mas? saya coba cek websitenya masih blm ada httpsnya.

    1. Masih harus diarahkan dan diaktifkan mas. Yang saya bahas masih sebatas instalasi certbotnya dan berharap deteksi otomatis web servernya sukses.

      Kalau kesulitan nanti saya buatkan tutorialnya yang lebih spesifik mas, secara manual mungkin. Pakai distro Linux apa mas? Nginxnya standar kan?

  3. mas letsencrypt dg wordpress multisite ga work knp ya, pdahl udh bisa di jlankan sslnya tpi klo 1 domain work, klo pke subdomain tulisan https dicoret merah engga wrna hijau

    1. Wogh… mbak pakai cara apa untuk masang Let’s Encryptnya? Cukup yang saya tuliskan diatas apa ada langkah tambahannya lagi?

      Untuk subdomain memang harus direquest lagi mbak. Sertifikat SSL dari Let’s Encrypt hanya berlaku satu nama domain saja. Dan subdomain itu sendiri. Kalau mbak mau satu sertifikat SSL untuk semuanya itu jenisnya Wildcard SSL mbak.

  4. udh work si mas, tpi hrus di atur secara manual yaitu jika client udh join ke website terus hrus dilakukan secara manual yaitu sprti install dri awal tpi menambahkan subdomain dri client utk memperbaharui cert, publikey, chain.. nah anehnya udh qu otak-atik msh tetep ga bisa. walau udh bnyk senjata yg aku keluarin tp tetep hrs dg cara manual. klo scara logika 1 domain memang bisa dg subdomain jg bisa di pake tpi hrs memperbaharui secara manual.. ada enda ya yg ga hrus kya gitu

    1. Loh iya mbak, memang sistemnya DV SSL itu per satu nama domain. Kalau ingin satu sertifikat SSL untuk semua subdomain itu namanya Wildcard SSL, dan ini masih berbayar.

    1. Oh.. mungkin saya tidak seahli yang bikin tutorialnya… tapi kok tidak ada tahap renew otomatis dari sertifikat SSLnya ya. Itu copas manual dari file .pem dan Private Key ke VestaCP, masalahnya masa berlaku dari Let’s Encrypt itu cuma 90 hari. Atau ada yang saya lewatkan ya.

    1. Intinya sertifikat SSL tipe wildcard itu gini mbak: *.nama_domain.com jadi memang secara valid mencakup seluruh subdomain yang ada didalamnya.

  5. An unexpected error occurred:
    The server experienced an internal error :: Error creating new cert
    Please see the logfiles in /var/log/letsencrypt for more details.

    Saya dapat pesan error seperti itu mas, gimaana ya solusinya?

    1. Mas bisa tambahkan ini terjadi pas proses apa? Punya daftar perintah yang dieksekusi sampai errornya?

  6. mas, saya pakai cloudflare. Saya ga pakai DNS sendiri, biar menggurangi resource.
    instalasi letsencrypt sudah berhasil, sudah dapat SSL Certificate. Namun di website masih belum muncul httpnya.
    sudah saya setting di wp-admin>general>https dan di cloudflare crypto>ssl>fullstrict. namun masih belum bisa.
    Kalau pakai DNS cloudflare tidak bisa pakai letsencrypt ya mas?

      1. Sayang ya mas, hehe. Adakah layanan untuk free DNS service yang bisa digunakan untuk letsencrypt mas?

      2. Eh… ada salah paham ini mas. Yang belum didukung CloudFlare itu HTTPS gratisnya dipasangkan pada situs yang menggunakan Let’s Encrypt. Tapi kalau cuma ingin mengarahkan nama domain ke alamat IP pakai A record ya tetap bisa mas. Jangan lupa nonaktifkan fitur DNS and HTTP Proxy (CDN) pada kolom Status di konfigurasi DNS CloudFlare. Klik saja icon awan oranyenya supaya jadi abu – abu kalau bingung.

        Tapi kalau mas masih butuh DNS hosting gratis lainnya coba Hurricane Electric atau ClouDNS. Yang lainnya juga ada mas: https://servernesia.com/217/penyedia-dns-hosting-gratis/

        Soal nanti tampilan websitenya akan HTTP atau HTTPS itu tergantung web servernya mas. Mas sudah coba akses secara manual lewat browser: https://nama_domain.com apakah sudah bisa dibuka? Kalau gagal berarti masih belum aktif HTTPSnya. Tapi kalau sudah bisa berarti tinggal masalah redirect trafik HTTP ke HTTPS.

  7. Iya maksudnya saya, kalau kita pakai DNS claudflare sertifikasi SSL punya letsencrypt tidak bisa dipakai. karena sekema lalulintas datanya kan gini ya User — cloudflare — server web. kalau server web yang sudah terpasang https letsencrypt tidak dapat dirasakan perubahannya oleh user karena user lewatnya cloudflare dulu. kalau user ingin merasakan perubahan di https letsencrypt berarti ga usah pakai cloudflare atau DNS punya serverwebnya sendiri. Koreksi mas kalau saya kliru hehe 😀
    kira-kira mendingan mana mas pakai cloudflare tapi ga bisa pakai letsencrypt atau pakai letsencrypt tanpa cloudflare.?

    1. Kurang lebih mas. 🙂 Dan supaya user ga lewat CloudFlare ke situsnya maka dinonaktifkan awan oranyenya mas, ini maksud saya. Mestinya bisa sih walaupun pakai Let’s Encrypt, ini hal berbeda soalnya (DNS dan HTTPS) selama ga pakai CDNnya CloudFlare, jadi cuma manfaatin DNS servernya saja.

      Kalau sekarang sih mending pakai CloudFlare saja daripada Let’s Encrypt, buat pertahanan pertama melawan bot – bot dan mengurangi kerja server mas. Hemat bandwidth juga. Pendapat pribadi saja.

  8. mas kalao mau memasukan publik key cert key chain key lewat putty gmn jdi setelah dibikin sertifikat keynya tidak perlu masuk ke vestacpnya… aqu si pernah tpi wktu pertma kali mencoba dan stelah itu dicoba lgi tdk bisa hehehe, lupa gak tek catet langkahnya….

    1. Eh mbak maksudnya gimana? Setting sertifikat/lets encrypt untuk VestaCP lewat SSH atau ngomongin login SSH ini ya?

  9. maksudnya kan saat bkin sertifikat key itu lwt putty nah hasil sertifikat yg tdi udh di buat kan harus di masukin di vesta cp sprti cert.pem publikey.pem chain.pem brati hrus login ke xx.xxx.xx.xx:8083 login vesta cp teru copas hsil sertifikat key yg tdi di buat di putty. nah qhu pernah bkin ssl yg secara otomatis nembak ke vesta cp tnpa hrus login mas cman qu lupa caranya

    1. Oalah… mbak buat self-signed certificate kah? Bukan pasang dari penyedianya ya?

      Apa yang seperti ini mbak?

      Buat backupnya dulu.

      cp /usr/local/vesta/ssl/certificate.crt /usr/local/vesta/ssl/certificate.crt.backup
      cp /usr/local/vesta/ssl/certificate.key /usr/local/vesta/ssl/certificate.key.backup

      Tambahkan kode (copas saja isinya) ke crt dan key untuk sertifikat SSLnya:

      nano /usr/local/vesta/ssl/certificate.crt
      nano /usr/local/vesta/ssl/certificate.key

      Tapi tutorial mini diatas untuk halaman login admin VestaCP supaya bisa HTTPS valid, apa maksudnya untuk domainnya?

  10. Agghh.. saya gak ngerti2 gini2an.. tp penasaran, tanya ya mas..
    saya pake vps di dalemnya ada 2 domain
    saya coba ikuti instruksinya, trs saya install di server apache, pas isian domain saya pilih salah satu domain saya.. dan taraaaaa berhasil..

    cumaaaaa…. pas domain yg di pasang ssl itu saya akses pake https yg nongol bukan blognya mas, tp malah login ke zadmin saya.. gemana ini ya mas.. mohon bantuannya 🙁

    1. Halo Rangga, mas sudah bikin konfigurasi virtual hostnya? Itu biasanya redirect ke panel karena nama domainnya tidak dikenal dan jadinya dialihkan ke defaultnya.

  11. nginx -t
    nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
    2017/01/19 09:09:51 [warn] 4037#4037: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1
    2017/01/19 09:09:51 [emerg] 4037#4037: BIO_new_file("/etc/letsencrypt/live/mysite/fullchain.pem") failed (SSL: error:0200100D:system library:fopen:Permission denied:fopen('/etc/letsencrypt/live/mysite/fullchain.pem','r') error:2006D002:BIO routines:BIO_new_file:system lib)
    nginx: configuration file /etc/nginx/nginx.conf test failed

    Seperti tu bagaimana ya mas, saya ga ngerti tadi sudah baca sana sini ganti hak akses tp masih tetap saja

    1. Mas bisa copas urutan perintah yang dilakukan sebelumnya? Dan kalau ada modifikasi konfigurasi bisa ditambahkan juga apanya.

  12. Sebelumnya saya hapus php lalu install php lagi, lalu pengaturan php-fpm dan init php sudah saya benerin, cuma sepertinya sala yupa install nya pakai root kalau sebelumnya pakai non-root, setelah itu saya cek dengan perintah nginx -t keluarnya seperti kode di atas.
    Satu lagi sekarang wordpress nya cuma bisa dibuka halaman depan nya saja, halaman post nya tidak bisa.
    Saat ini saya tidak utak atik dulu soalnya udah sering destroy

    1. Oke mas, bisa dicopaskan hasil dari perintah ini:

      ls -l /etc/letsencrypt/live/mysite/

      Ini pakai distro Linux apa ya mas?

  13. Saya pakai CentOS 7 mas, setelah saya baca baca di forum katanya sih begini:
    non-root cek nginx -t = ada error
    root atau sudo nginx -t = tidak ada error
    Apakah memang begitu kah?

    Hasil dari cek ls -l /etc/letsencrypt/live/mysite/ :

    lrwxrwxrwx 1 root root 32 Jan  7 05:01 cert.pem -> ../../archive/mysite/cert1.pem
    lrwxrwxrwx 1 root root 33 Jan  7 05:01 chain.pem -> ../../archive/mysite/chain1.pem
    lrwxrwxrwx 1 root root 37 Jan  7 05:01 fullchain.pem -> ../../archive/mysite/fullchain1.pem
    lrwxrwxrwx 1 root root 35 Jan  7 05:01 privkey.pem -> ../../archive/mysite/privkey1.pem
    1. Jalankan Nginxnya dengan root mas. Itu memang karena data – data Let’s Encrypt (seperti yang dicopas) yang punya adalah root.

  14. Iya mas sudah beres sekarang, nah sekarang timbul masalah lagi yaitu: 404 Not Found
    tapi ini 404 nya berbeda.
    pertanyaanya saya lanjutkan ke artikel yg lain deh saya cari dulu

  15. mas….bagusan ssl atau cdn ya??? soalnya google mempertimbangkan penggunaan ssl sekarang…oh ya..di cloudflare ada flexible ssl..tolong kasih tutorial yang komplit ya dan ter update 2017

  16. mas chandra untuk perintah ./certbot-auto renew --quiet itu maksudnya diperpanjang tiap berapa hari mas? apa bisa tentukan sendiri waktu perpanjangnya? misalnya setiap 60 hari atau 85 hari :p
    ini memanfaatkan cron kan mas?
    (mau dipakai buat subdomain 😀 )
    trims.

    1. Tanya lagi mas, saat masukkan nama domain apa perlu masukkan domain dengan www dan tanpa www atau cukup tanpa www saja karna saya pakainya yg tanpa www. Trims

      1. Tidak perlu www mbak. Semua nama domain kalau dibuatkan sertifikatnya itu secara implisit juga ikut versi wwwnya. Misal ya, servernesia.com akan digandengkan dengan www.servernesia.com. Misal saya buat untuk subdomain seperti forum.servernesia.com maka otomatis juga akan dibuatkan www.forum.servernesia.com. Sertifikat SSL tipe single domain memang seperti ini.

    2. Yup tentukan sendiri mbak dan memang pakai cron untuk penjadwalannya, kalau saya sih per 75 hari. Pokoknya jangan mepet – mepet dengan waktu kadaluarsanya.

  17. Halo mas Chandra, numpang nanya, di ubuntu 16.04 saya bisa install letsencrypt dan certbot, bisa dijelaskan mas perbedaan antara keduanya?

    Kalau ownershipnya (privkey.pem dan fullchain.pem) saya ganti dari root menjadi user biasa, bolehkah?

    Saya barusan buat sertifikaat,
    ~$ openssl x509 -noout -dates -in /etc/letsencrypt/live/nama_domain.com/fullchain.pem
    notBefore=Aug 29 02:42:21 2018 GMT
    notAfter=Nov 27 02:42:21 2018 GMT

    Lalu untuk autorenew
    ~$ sudo certbot renew
    Saving debug log to /var/log/letsencrypt/letsencrypt.log
    Processing /etc/letsencrypt/renewal/nama_domain.com.conf
    Cert not yet due for renewal
    The following certs are not due for renewal yet:
    /etc/letsencrypt/live/nama_domain.com/fullchain.pem expires on 2018-11-27 (skipped)
    No renewals were attempted.
    – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

    Apakah proses renew “menunggu” sertifikat expired dahulu baru bisa renew?

    Tenkyu pencerahannya…..

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *