GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana mengelola Lets Encrypt sertifikat SSL/TLS dengan certbot

Ayo Enkripsi adalah otoritas sertifikat (CA) otomatis dan terbuka yang dioperasikan oleh Internet Security Research Group (ISRG) dan didirikan oleh Electronic Frontier Foundation (EFF), Mozilla Foundation, dan lainnya. Ini memberikan sertifikat SSL/TLS gratis yang biasanya digunakan untuk mengenkripsi komunikasi untuk tujuan keamanan dan privasi, kasus penggunaan yang paling menonjol adalah HTTPS. Let's Encrypt bergantung pada protokol ACME (Automatic Certificate Management Environment) untuk menerbitkan, mencabut, dan memperbarui sertifikat. Certbot adalah utilitas sumber terbuka dan gratis yang terutama digunakan untuk mengelola sertifikat SSL/TLS dari Let's Encrypt otoritas sertifikat. Ini tersedia untuk sebagian besar sistem operasi UNIX dan mirip UNIX, termasuk GNU/Linux, FreeBSD, OpenBSD dan OS X. Panduan ini akan memberikan pengenalan platform-agnostik untuk penggunaan certbot.

CATATAN: Karena certbot sedang dalam proses, beberapa fitur atau perilaku yang dijelaskan dalam panduan ini mungkin berbeda di rilis yang lebih lama atau yang akan datang.

Persyaratan

  • Nama domain terdaftar dengan catatan A yang menunjuk ke alamat IPv4 Anda. `www.example.com` akan digunakan sebagai contoh.
  • Akses ke shell yang diistimewakan.

Konsep Umum

Mode Operasi

Menggunakan certbot untuk mengaktifkan HTTPS dapat dibagi menjadi dua bagian:Otentikasi dan Instalasi. Yang pertama membutuhkan pemecahan tantangan dan menyimpan sertifikat dan file lainnya. Langkah instalasi melibatkan konfigurasi dan pengamanan server web. Certbot dapat melakukan keduanya secara otomatis, dengan menjalankan subperintah. Perintah certonly dan install masing-masing adalah untuk otentikasi dan langkah-langkah instalasi.

Certbot juga menyertakan fitur pembaruan dan pencabutan sertifikat.

Tantangan

Memperoleh sertifikat Let's Encrypt melibatkan pemecahan tantangan validasi domain yang dikeluarkan oleh server ACME (Lingkungan Manajemen Sertifikat Otomatis). Tantangan ini memverifikasi kepemilikan domain yang Anda coba dapatkan sertifikatnya. Jenis tantangan yang berbeda ada, yang paling umum digunakan adalah HTTP-01. Seperti namanya, ia menggunakan protokol HTTP. Meskipun server HTTP dapat dikonfigurasi untuk menggunakan port TCP apa pun, tantangan ini hanya akan berfungsi pada port 80 karena tindakan keamanan. DNS-01 adalah jenis tantangan lain yang kurang populer berdasarkan resolusi DNS. Perhatikan bahwa sertifikat wildcard tidak dapat diperoleh melalui tantangan HTTP-01. Panduan ini awalnya akan fokus pada HTTP-01.

Plugin

Certbot mengandalkan plugin untuk melakukan otentikasi dan instalasi. Plugin seperti webroot dan standalone hanya melakukan otentikasi, sementara yang lain seperti plugin Apache dan Nginx dirancang untuk mendapatkan dan menginstal sertifikat secara otomatis (yaitu konfigurasi server web). Plugin lain mencakup beberapa plugin DNS khusus vendor untuk otentikasi DNS-01. Kebanyakan plugin certbot diinstal secara terpisah, kecuali plugin webroot dan standalone yang terintegrasi.

Memasang Certbot

Sebagian besar distribusi Linux menyediakan certbot di repositori resmi mereka. Di bawah ini adalah petunjuk penginstalan untuk platform yang banyak digunakan.

Debian dan Ubuntu:

apt update
apt install -y certbot

CentOS 7

yum install -y certbot

Fedora dan CentOS 8:

dnf install -y certbot

Linux Arch:

pacman -Sy certbot

FreeBSD:

pkg install py36-certbot

OpenBSD 6.0 dan yang lebih baru:

pkg_add certbot

MacOS (diperlukan buatan sendiri):

brew install letsencrypt

Lainnya:

Jika paket certbot tidak tersedia untuk platform Anda, Anda dapat menggunakan skrip certbot-auto wrapper resmi untuk menginstal certbot secara otomatis di sistem Anda. Dapat diunduh di sini.

Menggunakan Certbot

Sertifikat Daftar

Untuk menampilkan daftar sertifikat yang dikelola oleh certbot di server Anda, jalankan perintah:

certbot certificates

Mendapatkan Sertifikat Untuk Konfigurasi Manual

Jika Anda memilih untuk mengonfigurasi server web Anda secara manual, memperoleh sertifikat dapat dilakukan dengan dua cara. Baik dengan memberikan certbot akses ke direktori root web server Anda (yaitu plugin webroot), atau dengan menggunakan server web mandiri sementara pada port 80 (yaitu plugin mandiri). Plugin yang terakhir berguna dalam kasus di mana integrasi dengan server web Anda yang ada tidak mungkin atau tidak diinginkan. Untuk kemudahan dan pembaruan yang lebih sederhana, konsistenlah dengan plugin yang digunakan.

Menggunakan server web yang ada

Untuk menggunakan server web Anda yang ada, pastikan itu berjalan dan mendengarkan pada port 80 sebelum menjalankan perintah berikut

certbot certonly --webroot

Anda akan diminta untuk memasukkan, antara lain, nama domain Anda dan jalur ke root web Anda, yang secara default adalah `/var/www/html/` di sebagian besar sistem Linux. Atau, Anda dapat menentukan informasi yang diperlukan sebagai argumen perintah. Misalnya:

certbot certonly --webroot --webroot-path /var/www/html --agree-tos -m [email protected] -d www.example.com

Menggunakan server web mandiri

Untuk menggunakan server mandiri, pertama-tama pastikan ketersediaan port 80. Anda dapat memeriksa semua proses yang mengikat port tersebut menggunakan:

ss -lntp 'sport = 80'

Jika perlu, hentikan layanan/proses yang menyinggung sebelum melanjutkan. Kemudian, berikan perintah:

certbot certonly --standalone

Setelah sertifikat dikeluarkan, Anda perlu mengkonfigurasi server web Anda secara manual. File yang relevan dapat ditemukan di /etc/letsencrypt/live/your_domain.

Instalasi HTTPS Interaktif

Seperti disebutkan sebelumnya, certbot dapat mengotomatiskan seluruh proses pengaturan HTTPS, termasuk konfigurasi server web. Plugin tersedia untuk Apache dan Nginx, dan mungkin perlu diinstal sebagai paket terpisah. Instal plugin certbot khusus untuk server web Anda, lalu jalankan `certbot run --PLUGIN_NAME`. Kami akan mendemonstrasikan seluruh proses untuk Apache pada sistem Debian 10. Proses untuk Nginx serupa.

apt install -y python-certbot-apache
certbot run --apache

Dengan asumsi server web Anda sudah dikonfigurasi untuk nama domain Anda, certbot akan mengurai konfigurasi yang ada dan meminta Anda untuk memilih nama domain mana yang harus mengaktifkan HTTPS. Jika server web Anda tidak dikonfigurasi, atau jika certbot gagal mendeteksi nama domain Anda, cukup masukkan nama domain Anda secara manual saat diminta. Misalnya:

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: www.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1

Certbot akan membuat file konfigurasi Apache baru untuk host virtual HTTPS baru Anda, dan akan menanyakan apakah lalu lintas HTTP harus dialihkan ke HTTPS. Kecuali Anda memiliki alasan kuat untuk tidak melakukannya, Anda harus mengaktifkan pengalihan ke HTTPS.

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
Enabled Apache rewrite module
Redirecting vhost in /etc/apache2/sites-enabled/www.example.com.conf to ssl vhost in /etc/apache2/sites-available/www.example.com-le-ssl.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://www.example.com

Memperpanjang sertifikat

Perpanjangan Manual

Untuk memperbarui sertifikat Anda dengan certbot, Anda dapat menggunakan subperintah perbarui. Selama pembaruan, certbot akan menggunakan plugin dan opsi yang sama dengan yang digunakan untuk penerbitan asli. Sertifikat hanya diperbarui jika habis masa berlakunya dalam waktu kurang dari 30 hari, jadi perintah ini dapat digunakan sesering yang diinginkan, karena tidak akan ada tindakan jika sertifikat tidak mendekati tanggal kedaluwarsa. Perintahnya sederhana:

certbot renew

Jika plugin mandiri digunakan untuk menerbitkan sertifikat, Anda harus menghentikan server web Anda agar pembaruan berhasil. Anda dapat melakukannya dengan menggunakan kait. Misalnya, jika sistem menjalankan Apache, perintahnya adalah:

certbot renew --pre-hook "systemctl stop apache2.service" --post-hook "systemctl start apache2.service"

Perpanjangan Otomatis

Banyak distribusi telah mengaktifkan pembaruan otomatis secara default, baik melalui pengatur waktu systemd atau pekerjaan cron. Anda dapat memeriksa pengatur waktu systemd dengan:

systemctl list-timers

Dan untuk tugas cron menggunakan:

ls /etc/cron*

Jika plugin webroot digunakan untuk penerbitan, pembaruan otomatis akan berhasil selama server web Anda berjalan. Namun, dengan plugin mandiri, perintah pembaruan otomatis default akan gagal jika server web berjalan, karena certbot tidak akan dapat mengikat ke port 80. Oleh karena itu, memodifikasinya dengan penambahan kait, seperti yang ditunjukkan di atas, diperlukan.

Mencabut Sertifikat

Mencabut sertifikat dapat dilakukan dengan menentukan jalur atau nama sertifikat:

certbot revoke --cert-name cert_name
(OR)
certbot revoke --cert-path /path/to/cert.pem

Misalnya:

certbot revoke --cert-name www.example.net

Setelah menjalankan subcommand pencabutan, certbot akan menanyakan apakah file sertifikat harus dihapus. Jika Anda memilih untuk tidak menghapusnya, sertifikat yang dicabut akan diperbarui selama pembaruan berikutnya. Beberapa opsi cukup jelas dapat diteruskan ke subperintah pencabutan:

  • --delete-after-revoke (meminta pilihan pengguna secara default)
  • --no-delete-after-revoke (meminta pilihan pengguna secara default)
  • --reason [unspecified,keycompromise,affiliationchanged,digantikan,penghentian operasi] (Default:unspecified)

Sertifikat Wildcard

Sertifikat wildcard tunggal dapat digunakan untuk mengidentifikasi beberapa subdomain, sebagai alternatif untuk memisahkan sertifikat reguler. Untuk mendapatkan sertifikat wildcard, tantangan DNS-01 harus digunakan. Sementara beberapa plugin khusus vendor yang mengotomatiskan proses otentikasi ACME tersedia, kami akan menjelaskan proses manual vendor-netral. Diperlukan akses ke server nama untuk domain Anda.

Gunakan perintah berikut untuk meminta sertifikat wildcard:

certbot certonly --manual --preferred-challenges dns-01 -d *.example.net

Certbot akan menampilkan nilai yang harus digunakan dalam catatan TXT DNS. Data TXT ini berfungsi sebagai validasi kepemilikan yang diperlukan.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.example.net with the following value:
y77OkxXi89sJLjUgYu-HReYrcVlxt_bfG8yVOVKngBOcU
Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

Anda harus membuat catatan yang ditentukan di panel kontrol DNS Anda sebelum melanjutkan. Setelah catatan dibuat, tunggu beberapa menit sebelum menekan Enter, yang memicu server ACME untuk memverifikasinya. Dalam beberapa kasus, waktu tunggu yang lebih lama mungkin diperlukan agar record baru dapat menyebar dengan benar dan dapat diakses. Setelah berhasil, sertifikat, rantai, dan kunci pribadi akan disimpan di /etc/letsencrypt/live/example.com/.

Referensi dan Informasi Tambahan

  • Repositori Certbot Github resmi
  • Lingkungan Manajemen Sertifikat Otomatis (ACME) RFC 8555
  • Dokumentasi Certbot EFF
  • Certbot(1) Halaman Manual

Linux
  1. Cara mengamankan layanan email Linux Anda dengan SSL/TLS

  2. Cara mengamankan koneksi dengan sertifikat SSL/TLS

  3. Bagaimana Mengkonfigurasi VSFTPD dengan koneksi terenkripsi SSL/TLS?

  1. Cara mengamankan akun yang mendukung cPanel dengan sertifikat SSL Lets Encrypt

  2. Cara mengamankan akun yang mendukung cPanel dengan sertifikat SSL Sectigo

  3. Mengamankan ISPConfig 3.1 Dengan Lets Encrypt SSL Certificate Gratis

  1. Pemikiran tentang SSL kompatibel menengah dengan sertifikat Lets Encrypt

  2. Cara Menginstal DokuWiki dengan Lets Encrypt SSL di Debian 11

  3. Cara Mengamankan nama host Plesk pada port 8443 dengan sertifikat SSL