Home Tutorial Cara Install Let’s Encrypt di LAMP CentOS 7
formats

Cara Install Let’s Encrypt di LAMP CentOS 7

Published on May 6, 2017, by in Tutorial.

Tutorial ini akan menunjukkan cara memasang sertifikat TLS / SSL dari Let’s Encrypt pada server CentOS 7 yang menjalankan Apache sebagai server web.

Install Software yang dibutuhkan

Enable the EPEL repository

yum -y install epel-release

Install paket yang dibutuhkan

yum -y install httpd mod_ssl python-certbot-apache

 

Konfigurasi Akses ke Apache

Sebelum kita bisa memasang sertifikat, kita perlu memastikan bahwa Apache berjalan dengan baik di server kita dan dapat diakses dari luar.

Untuk memastikan Apache berjalan dengan baik, periksa dengan menggunakan perintah berikut

systemctl start httpd

Verifikasi bahwa Apache berjalan dengan memeriksa status layanan:

systemctl status httpd

Keluaran test status apache seperti berikut

* httpd.service – The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2017-05-06 03:51:08 UTC; 11min ago
Docs: man:httpd(8)
man:apachectl(8)
Process: 8194 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
Process: 7262 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS)
Main PID: 8199 (httpd)
Status: “Total requests: 1; Current requests/sec: 0; Current traffic: 0 B/sec”
CGroup: /system.slice/httpd.service
|-8199 /usr/sbin/httpd -DFOREGROUND
|-8200 /usr/sbin/httpd -DFOREGROUND
|-8201 /usr/sbin/httpd -DFOREGROUND
|-8202 /usr/sbin/httpd -DFOREGROUND
|-8203 /usr/sbin/httpd -DFOREGROUND
|-8204 /usr/sbin/httpd -DFOREGROUND
`-8209 /usr/sbin/httpd -DFOREGROUND

May 06 03:51:08 manage.zenhost.net systemd[1]: Starting The Apache HTTP Serv….
May 06 03:51:08 manage.zenhost.net systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.

Periksa apakah situs Anda dapat dijangkau dengan menggunakan curl:

curl websiteanda.com

HTML untuk halaman utama Anda harus ditampilkan. Karena paket mod_ssl mengonfigurasi sertifikat SSL yang ditandatangani sendiri secara default, Anda dapat memeriksa domain Anda dengan HTTPS juga jika Anda menggunakan flag -k untuk mengizinkan sertifikat yang tidak tepercaya:

curl -k https://websiteanda.com

Ini memungkinkan Anda melihat keluaran yang sama dan memastikan port SSL terbuka.

Sekarang Apache sudah siap, kita bisa meminta sertifikat SSL untuk domain kita.

Membangkitkan Sertifikat SSL untuk Apache menggunakan certbot Mari kita encrypt klien cukup mudah. Klien akan secara otomatis mendapatkan dan memasang sertifikat SSL baru yang valid untuk domain yang disediakan sebagai parameter.

Jika Anda ingin memasang satu sertifikat yang valid untuk beberapa domain atau subdomain, Anda dapat meneruskannya sebagai parameter tambahan ke perintah. Nama domain pertama dalam daftar parameter akan menjadi domain dasar yang digunakan oleh Let’s Encrypt untuk membuat sertifikat, dan oleh karena itu kami menyarankan agar Anda melewatkan nama domain tingkat atas yang paling jelas seperti yang pertama dalam daftar, diikuti oleh subdomain tambahan Atau alias:

sudo certbot –apache -d websiteanda.com -d www.websiteanda.com

Untuk menjalankan instalasi interaktif dan mendapatkan sertifikat yang hanya mencakup satu domain, jalankan perintah certbot dengan:

certbot –apache -d websiteanda.com

Utilitas certbot juga dapat meminta informasi domain Anda selama prosedur permintaan sertifikat. Untuk menggunakan fungsi ini, hubungi certbot tanpa domain:

certbot –apache

 

Pilih Setelan SSL yang Lebih Aman untuk Apache

Konfigurasi SSL default yang dikirim dengan versi Apache CentOS sedikit tertanggal dan karena itu, rentan terhadap beberapa masalah keamanan terkini.

Untuk mengonfigurasi opsi terkait SSL yang lebih aman, buka file ssl.conf (atau file Host Virtual mana pun yang Anda pilih saat diminta selama proses permintaan Enkrip Mari):

nano /etc/httpd/conf.d/ssl.conf

Di dalam, pertama-tama kita harus menemukan baris SSLProtocol dan SSLCipherSuite dan menghapusnya atau memberi tanda # komentar. Konfigurasi yang akan kita tempel sebentar lagi akan menawarkan pengaturan yang lebih aman daripada default yang disertakan dengan Apache CentOS:

. . .
# SSLProtocol all -SSLv2
. . .
# SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA

Copas setingan berikut setelah </VirtualHost> pada perintah

nano /etc/httpd/conf.d/ssl.conf

seperti berikut :

. . .
</VirtualHost>
. . .

# Begin copied text
# from https://cipherli.st/
# and https://raymii.org/s/tutorials/Strong_SSL_Security_On_Apache2.html

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
# Disable preloading HSTS for now. You can use the commented out header line that includes
# the “preload” directive if you understand the implications.
#Header always set Strict-Transport-Security “max-age=63072000; includeSubdomains; preload”
Header always set Strict-Transport-Security “max-age=63072000; includeSubdomains”
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off
SSLUseStapling on
SSLStaplingCache “shmcb:logs/stapling-cache(150000)”
# Requires Apache >= 2.4.11
# SSLSessionTickets Off

Bila Anda selesai membuat perubahan ini, Anda dapat menyimpan dan menutup file.

Selanjutnya, periksa konfigurasi Anda untuk kesalahan sintaks dengan mengetikkan:

apachectl configtest

Hasil outputnya seperti berikut :

systemctl restart httpd

Server Anda sekarang harus dikonfigurasi untuk melayani halaman Anda menggunakan pengaturan SSL yang aman.

Periksa Status Sertifikat Anda

Anda dapat memverifikasi status sertifikat SSL Anda dengan link berikut (jangan lupa ganti websiteanda.com dengan domain anda):

https://www.ssllabs.com/ssltest/analyze.html?d=websiteanda.com&latest

Sekarang Anda dapat mengakses situs web Anda menggunakan awalan https. Pada saat penulisan ini, pengaturan ini memberikan nilai A +.

Mengatur Pembaruan Otomatis

Mari Enkripsi sertifikat berlaku selama 90 hari, namun sebaiknya perpanjang sertifikat setiap 60 hari untuk memungkinkan margin kesalahan. Klien Certbot Let’s Encrypt memiliki perintah pembaruan yang secara otomatis memeriksa sertifikat yang terinstal saat ini dan mencoba memperbaruinya jika kurang dari 30 hari dari tanggal kedaluwarsa.

Untuk memicu proses perpanjangan untuk semua domain terinstal, Anda harus menjalankan:

certbot renew

Karena kami baru saja memasang sertifikat, perintah hanya akan memeriksa tanggal kedaluwarsa dan mencetak pesan yang memberitahukan bahwa sertifikat tersebut bukan karena perpanjangan. Outputnya akan terlihat seperti ini:

Output
Saving debug log to /var/log/letsencrypt/letsencrypt.log

——————————————————————————-
Processing /etc/letsencrypt/renewal/example.com.conf
——————————————————————————-
Cert not yet due for renewal

The following certs are not due for renewal yet:
/etc/letsencrypt/live/example.com/fullchain.pem (skipped)
No renewals were attempted.

Perhatikan bahwa jika Anda membuat sebuah sertifikat paket dengan beberapa domain, hanya nama domain dasar yang akan ditampilkan dalam output, namun perpanjangannya harus berlaku untuk semua domain yang termasuk dalam sertifikat ini.

Cara praktis untuk memastikan sertifikat Anda tidak akan usang adalah membuat tugas cron yang secara berkala akan menjalankan perintah perpanjangan otomatis untuk Anda. Karena pembaruan pertama kali memeriksa tanggal kadaluarsa dan hanya menjalankan perpanjangan jika sertifikat kurang dari 30 hari sejak kadaluarsa, aman untuk membuat tugas cron yang berjalan setiap minggu atau bahkan setiap hari, misalnya.

Mari edit crontab untuk membuat pekerjaan baru yang akan menjalankan perintah pembaharuan setiap hari. Untuk mengedit crontab untuk pengguna root, jalankan:

crontab -e

Sertakan konten berikut, semuanya dalam satu baris:

crontab
. . .
30 2 * * * /usr/bin/certbot renew –renew-hook “systemctl restart httpd” >> /var/log/le-renew.log

Simpan dan keluar. Ini akan menciptakan tugas cron baru yang akan mengeksekusi perintah perpanjangan certbot setiap hari pukul 2.30. Output yang dihasilkan oleh perintah akan disalurkan ke file log yang terletak di /var/log/le-renewal.log. Karena perintah tersebut memeriksa berakhirnya sertifikat secara lokal, ini tidak menekankan infrastruktur Let’s Encrypt, namun memungkinkan Anda memperbarui sertifikat Anda jika sudah dalam 30 hari kedaluwarsa. Apache akan restart secara otomatis jika ada sertifikat yang diperbaharui.

Demikian semoga bermanfaat.

Terjemahan bebas dari : https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-centos-7

 

Leave a Reply

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