Let's Encrypt: SSL Gratis. Cara Install, Setting, dan Auto-renew

Discussion in 'Site & Server Administration' started by Dan, Feb 27, 2016.

  1. Dan

    Dan Forum Bot

    Joined:
    Dec 4, 2012
    Messages:
    1,316
    Likes Received:
    251
    Trophy Points:
    83
    Google+:
    Let’s Encrypt menyediakan SSL/TLS gratis, terotomatisasi, dan terbuka yang diharapkan memberi manfaat bagi publik dari segi keamanan berinternet. Sertifikat SSL ini disediakan oleh Internet Security Research Group (ISRG).

    [​IMG]

    Sebelum menggunakannya berikut beberapa hal mengenai Let's Encrypt yang perlu kita ketahui:
    • Gratis: Setiap orang yang memiliki domain bisa menggunakan Let's Encrypt untuk memperoleh sertifikat SSL yang terpercaya secara gratis.

    • Otomatis: Untuk mendapatkan sertifikat SSL dari Let's Encrypt caranya sangatlah mudah dan cepat dikarenakan proses otomatisasi.

    • Aman: Dengan menggunakan SSL di server kita maka keamanan akan lebih terjamin. Apalagi Let's Encrypt mendukung hampir semua browser yang ada.

    • Transparan: Data dari semua SSL tercatat secara publik di database mereka yang memungkinkan semua orang untuk menelitinya.

    • 90 hari: Masa berlaku dari sertifikat SSL gratisan ini hanya 90 hari tapi dikarenakan mendukung otomatisasi sehingga bukan menjadi masalah karena bisa auto-renew.

    Instalasi dan Konfigurasi Let's Encrypt

    Saya disini menggunakan CentOS (6 & 7) meskipun hampir sama untuk semua OS misal Debian ataupun Ubuntu.

    Pertama kita menginstall Git dan mendownload repo dari Let's Encrypt ke server kita.

    Code:
    # Install git
    
    yum install git
    
    # Clone repo ke direktori /opt/letsencrypt
    
    git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
    
    cd /opt/letsencrypt
    
    ./letsencrypt-auto --help
    Setelah itu buat file konfigurasi di folder /etc/letsencrypt (bisa di folder mana saja sebenarnya) dengan ekstensi .ini misal domain.ini dan paste teks berikut:

    Code:
    # This is an example of the kind of things you can do in a configuration file.
    # All flags used by the client can be configured here. Run Let's Encrypt with
    # "--help" to learn more about the available options.
    
    # Use a 4096 bit RSA key instead of 2048
    rsa-key-size = 4096
    
    # Uncomment and update to register with the specified e-mail address
    email = foo@example.com
    
    # Uncomment and update to generate certificates for the specified
    # domains.
    domains = example.com, www.example.com
    
    # Uncomment to use a text interface instead of ncurses
    # text = True
    
    # Uncomment to use the standalone authenticator on port 443
    # authenticator = standalone
    # standalone-supported-challenges = tls-sni-01
    
    # Uncomment to use the webroot authenticator. Replace webroot-path with the
    # path to the public_html / webroot folder being served by your web server.
    # authenticator = webroot
    # webroot-path = /usr/share/nginx/html
    Catatan:
    • Ganti opsi email dengan email kamu untuk notifikasi ketika sertifikat akan expire.
    • Untuk opsi domains isikan semua domain kamu yang ingin dibuatkan SSL-nya. Ingat untuk memisahkan dengan koma untuk tiap domainnya.
    Kita tinggal membuat SSL untuk domain yang sudah kita tuliskan diatas dengan menjalankan perintah seperti berikut:

    Code:
    # Matikan webservernya
    
    service httpd stop
    
    # Masuk ke folder /opt/letsencrypt
    
    cd /opt/letsencrypt
    
    # Generate SSL
    
    ./letsencrypt-auto certonly --standalone --agree-tos --renew-by-default --config /etc/letsencrypt/domain.ini
    
    # Nyalakan lagi webservernya
    
    service httpd start
    SSL akan tercipta di folder /etc/letsencrypt/live dan untuk nama menggunakan domain pertama pada opsi domains di file konfigurasinya misal example.com.

    Ada 3 buah file berekstensi .pem yang kita perlukan yaitu: cert.pem, chain.pem, dan privkey.pem.


    Instalasi SSL ke Webserver

    Saya menggunakan webserver Apache dan kita cukup menambahkan SSL yang ada ke virtual host. Contoh:

    Code:
    <virtualhost *:80>
        ServerName example.com
        ServerAlias example.com www.example.com
        Redirect permanent / https://www.example.com/
    </VirtualHost>
    
    <virtualhost *:443>
        ServerName example.com
        ServerAlias example.com www.example.com
        ServerAdmin dan@example.com
        DocumentRoot /var/www/html/example.com
        ErrorLog /var/log/httpd/example.com_error.log
        CustomLog /var/log/httpd/example.com_access.log combined
        <Directory "/var/www/html/example.com">
            Options FollowSymLinks Indexes
            AllowOverride All
            Order Allow,Deny
            Allow from all
            DirectoryIndex index.php
        </Directory>
        SSLEngine on
        SSLProtocol ALL -SSLv2 -SSLv3
        SSLHonorCipherOrder On
        SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
        SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
    </VirtualHost>

    Instalasi SSL pada Zpanel/Sentora

    Jika kalian menggunakan Zpanel/Sentora ada beberapa hal yang perlu disiapkan terlebih dahulu.

    Pastikan sudah menginstall mod_ssl:

    Code:
    yum install mod_ssl
    Buka /etc/httpd/conf.d/ssl.conf dan kasih tanda pagar pada Listen 443 menjadi:

    Code:
    #
    # When we also provide SSL we have to listen to the
    # the HTTPS port in addition.
    #
    # Listen 443
    Masuk ke panel kalian, klik Admin -> klik Module Admin -> Apache Config -> Scroll ke bawah dan pada Override a Virtual Host Setting pilih domain yang akan di konfigurasi.

    Selanjutnya pada Port Override isikan dengan 443 dan centang Forward Port 80 to Overriden Port. Isikan konfigurasi berikut pada Custom Entry:.

    Code:
    SSLEngine on
    SSLProtocol ALL -SSLv2 -SSLv3
    SSLHonorCipherOrder On
    SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
    SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
    
    # Keeping bellow for future upgrades.
    # Requires Apache >= 2.4
    # SSLCompression off
    Paksa supaya Zpanel/Sentora melakukan perubahan segera:

    Code:
    # Zpanel
    
    php -q /etc/zpanel/panel/bin/daemon.php
    
    # Sentora
    
    php -q /etc/sentora/panel/bin/daemon.php
    
    # Restart Apache
    
    service httpd restart

    Lakukan ke semua domain yang ingin dipasangi SSL dan kita tidak perlu mengganti nama SSL-nya.


    Auto-renew Let's Encrypt

    Masa berlaku dari SSL-nya hanya 90 hari jadi solusi yang paling tepat adalah kita membuat script bash yang dipadukan dengan cron untuk memperpanjang SSL secara otomatis jika sudah akan expire.

    Pertama buat script bash-nya:

    Code:
    vi /etc/letsencrypt/le-renew
    Isikan dengan script berikut:

    Code:
    #!/bin/bash
    
    web_service='httpd'
    config_file="/etc/letsencrypt/domain.ini"
    le_path='/opt/letsencrypt'
    exp_limit=30;
    
    if [ ! -f $config_file ]; then
        echo "[ERROR] config file does not exist: $config_file"
        exit 1;
    fi
    
    domain=`grep "^\s*domains" $config_file | sed "s/^\s*domains\s*=\s*//" | sed 's/(\s*)\|,.*$//'`
    cert_file="/etc/letsencrypt/live/$domain/fullchain.pem"
    
    if [ ! -f $cert_file ]; then
        echo "[ERROR] certificate file not found for domain $domain."
    fi
    
    exp=$(date -d "`openssl x509 -in $cert_file -text -noout|grep "Not After"|cut -c 25-`" +%s)
    datenow=$(date -d "now" +%s)
    days_exp=$(echo \( $exp - $datenow \) / 86400 |bc)
    
    echo "Checking expiration date for $domain..."
    
    if [ "$days_exp" -gt "$exp_limit" ] ; then
        echo "The certificate is up to date, no need for renewal ($days_exp days left)."
        exit 0;
    else
        echo "The certificate for $domain is about to expire soon. Starting webroot renewal script..."
        echo "Stopping $web_service"
        service $web_service stop
        $le_path/letsencrypt-auto certonly --standalone --agree-tos --renew-by-default --config $config_file
        echo "Starting $web_service"
        service $web_service start
        echo "Renewal process finished for domain $domain"
        exit 0;
    fi
    Setelah disimpan pastikan script tersebut bisa dieksekusi:

    Code:
    chmod +x /etc/letsencrypt/le-renew
    Sekarang kita hanya perlu membuat cron yang berjalan satu minggu sekali untuk mengecek apakah SSL sudah mau expire dan jika SSL akan expire kurang dari 30 hari maka otomatis script bash akan me-renew sertifikatnya.

    Code:
    # Membuka crontab
    
    crontab -e
    
    # Isikan baris berikut
    
    0 0 * * 0 /etc/letsencrypt/le-renew > /var/log/le-renew.log 2>&1
    Untuk mengetestnya kita eksekusi saja script bashnya. Contoh outputnya sebagai berikut:

    Code:
    Checking expiration date for example.com...
    The certificate is up to date, no need for renewal (89 days left).
    Homepage dari salah satu project saya yaitu HTMLy juga menggunakan sertifikat SSL ini.

    Sumber: Danlogs.
     
    siprof and anton_sudibyo like this.
  2. Si Raja

    Si Raja Active Member

    Joined:
    Nov 24, 2015
    Messages:
    799
    Likes Received:
    68
    Trophy Points:
    28
  3. yungga19

    yungga19 Well-Known Member

    Joined:
    Nov 28, 2015
    Messages:
    1,474
    Likes Received:
    86
    Trophy Points:
    48
    Belum ada rencana nih ,... masih pake http
     
  4. KangAndre

    KangAndre Member

    Joined:
    Jan 25, 2014
    Messages:
    9,107
    Likes Received:
    2,287
    Trophy Points:
    113
    Keren... Facebook sudah menjadi Sponsor Utama selain Mozzila, Chrome. Automatic, dll.

    We’re happy to share today that Facebook is the newest Gold sponsor of Let’s Encrypt. Facebook has taken multiple important steps to support and advance encryption this year, and we are glad to see Let’s Encrypt as the latest example.

    According to Alex Stamos, Chief Security Officer at Facebook, “Making it easier for websites to deploy HTTPS encryption is an important step in improving the security of the whole internet, and Facebook is proud to support this effort.”

    Facebook’s sponsorship will help us produce a greater impact as we open up our public beta today and usher in more participants over the coming months.
     
  5. yungga19

    yungga19 Well-Known Member

    Joined:
    Nov 28, 2015
    Messages:
    1,474
    Likes Received:
    86
    Trophy Points:
    48
    Memang penting buat perlinndungan website ,..
     
  6. KangAndre

    KangAndre Member

    Joined:
    Jan 25, 2014
    Messages:
    9,107
    Likes Received:
    2,287
    Trophy Points:
    113
    Harus pakai Linux untuk mendapatkan sertifikasinya?
    Saya coba pakai windows gagal. Instalasi Git hanya mendapat direktori opt/letsencrypt saja. Tapi perintah untuk menjalankan letsencrypt-auto tidak bekerja karena perlu Python.
    Berhubung nggak punya linux, nyerah :D
     
  7. ihsansfd

    ihsansfd Active Member

    Joined:
    Apr 5, 2015
    Messages:
    225
    Likes Received:
    47
    Trophy Points:
    28
    Setelah masa berlaku 90 hari habis, untuk memperpanjang harus bayar berapa?
     
  8. Dan

    Dan Forum Bot

    Joined:
    Dec 4, 2012
    Messages:
    1,316
    Likes Received:
    251
    Trophy Points:
    83
    Google+:
    Bisa untuk Windows, coba pakai ini https://github.com/ebekker/ACMESharp

    Ini gratis terus.
     
  9. Fahmi

    Fahmi Newbie

    Joined:
    Dec 5, 2012
    Messages:
    1,719
    Likes Received:
    138
    Trophy Points:
    63
    Google+:
    Gratisan lagi, sebenernya pakai cloudflare sudah cukup, tapi ini lebih bagus apa gmn Mas Dan?
     
  10. ihsansfd

    ihsansfd Active Member

    Joined:
    Apr 5, 2015
    Messages:
    225
    Likes Received:
    47
    Trophy Points:
    28
  11. Dan

    Dan Forum Bot

    Joined:
    Dec 4, 2012
    Messages:
    1,316
    Likes Received:
    251
    Trophy Points:
    83
    Google+:
    Tidak semua situs cocok dengan Cloudflare. Cloudflare-kan ada batasan tertentu di setiap plan. Dari segi SSL lebih fleksibel menggunakan SSL kita sendiri. Kalau hanya sekedar situs biasa/blog memakai SSL dari Cloudflare sudah lebih dari cukup.

    Tidak bisa. Pakai Cloudflare saja untuk ini.
     
  12. Minecraftndns

    Minecraftndns Active Member

    Joined:
    Dec 13, 2015
    Messages:
    915
    Likes Received:
    99
    Trophy Points:
    28
  13. Margareth

    Margareth Well-Known Member

    Joined:
    Nov 16, 2014
    Messages:
    1,070
    Likes Received:
    138
    Trophy Points:
    63
  14. DwiKhasbullah

    DwiKhasbullah Well-Known Member

    Joined:
    Aug 7, 2014
    Messages:
    1,788
    Likes Received:
    113
    Trophy Points:
    63
    Google+:
    Belum lama ini disranin juga sama temen untuk makek SSL tapi masih belum makek heheh ntar kontak langsung saja deh sama Maha Suhu @Dan soalnya yang paling ngerti dan yang jelas Hostingnya makek punya Om hehhehe kabuuurrr keburu di uncali watu krikil...
     
  15. Dan

    Dan Forum Bot

    Joined:
    Dec 4, 2012
    Messages:
    1,316
    Likes Received:
    251
    Trophy Points:
    83
    Google+:
    Saya jualan SSL juga tapi mending pakai ini saja, bagus ko :D
     
  16. DwiKhasbullah

    DwiKhasbullah Well-Known Member

    Joined:
    Aug 7, 2014
    Messages:
    1,788
    Likes Received:
    113
    Trophy Points:
    63
    Google+:
    Mending bayar ke sampean kang *ketawa4**kagum**kagum* buat tambah jajan anaknya ... *jail**jail**jail*
     
  17. KangAndre

    KangAndre Member

    Joined:
    Jan 25, 2014
    Messages:
    9,107
    Likes Received:
    2,287
    Trophy Points:
    113
    Semalam saya baca ini juga (tahu dari forum letsencrypt) tapi setelah tahu butuh NET 4.5, Net Core dan ACMESharp PowerShell Module, pastinya trial end error.... wah bisa makan waktu banyak :D
     
  18. AndroidApkApps

    AndroidApkApps Active Member

    Joined:
    Dec 11, 2015
    Messages:
    613
    Likes Received:
    36
    Trophy Points:
    28
    Google+:
    Keren juga tapi masih belum paham cara instalasinya haha *berkeringat*
     
  19. KangAndre

    KangAndre Member

    Joined:
    Jan 25, 2014
    Messages:
    9,107
    Likes Received:
    2,287
    Trophy Points:
    113
    Segera beli sekarang selagi murah. 24 jam lagi harga akan naik 200% wkwkwkwk.....
     
  20. KangAndre

    KangAndre Member

    Joined:
    Jan 25, 2014
    Messages:
    9,107
    Likes Received:
    2,287
    Trophy Points:
    113
    Blogspot sudah punya https sendiri dan sudah bisa diakses meskipun masih kacau :D
     
Loading...
Similar Threads - Let's Encrypt Gratis
  1. KangAndre
    Replies:
    44
    Views:
    102,072

Share This Page