Konten
Pengantar
Let's Encrypt adalah otoritas sertifikat terbuka dan otomatis yang menggunakan PUNCAK (Lingkungan Manajemen Sertifikat Otomatis) protokol untuk memberikan sertifikat TLS / SSL gratis kepada klien yang kompatibel. Sertifikat ini dapat digunakan untuk mengenkripsi komunikasi antara server web dan pengguna.
Tutorial ini akan membahas secara singkat otoritas sertifikat dan bagaimana integrasi Zevenet bekerja dengan Let's Encrypt, kemudian meninjau bagaimana Zevenet menggunakan certbot (Klien ACME) untuk melakukan komunikasi dengan Let's encrypt infrastruktur.
Zevenet Load Balancer 6.0.3 atau versi yang lebih tinggi mencakup pembungkus certbot kecil yang disebut letsencryptz untuk menggunakan fungsionalitas webroot Certbot, baris berikut menjelaskan cara kerja pembungkus ini, harap pertimbangkan semua ini untuk membuatnya berfungsi di lingkungan produksi.
Bagaimana cara kerja Let's encrypt validation?
Sebagai deskripsi fungsionalitas webroot singkat, plugin webroot berfungsi dengan membuat file sementara untuk setiap domain yang Anda minta di jalur file Zevenet /usr/local/zevenet/app/letsencryptz/webroot/.well-known/acme-challenge/. Kemudian server validasi Let's Encrypt membuat permintaan HTTP untuk memvalidasi bahwa DNS untuk setiap domain yang diminta menyelesaikan ke server yang menjalankan letsencryptz wrapper dan file sementara untuk tujuan validasi dapat diakses, diagram berikut menjelaskan contoh nyata:
Dalam diagram sebelumnya, penyeimbang Zevenet Load berada di belakang Router / Firewall dengan alamat IP publik 185.79.20.147 (sebagai contoh), lalu lintas HTTP dan HTTPS diikat ke penyeimbang beban internal dengan VIP 192.168.101.31 (sebagai contoh), di mana penyeimbang beban dikonfigurasi dengan 2 berbagai peternakan:
Nama Pertanian HTTPS WebHosting melalui 192.168.101.31: 443. Peternakan ini bertanggung jawab untuk menawarkan hosting web, berbagai server web diterbitkan bersama ini ke Internet. Sebagai contoh, test1.zevenet.es, test2.zevenet.es, test3.zevenet.es sedang menguji halaman web yang diterbitkan pada layanan virtual ini antara lain.
Nama Pertanian HTTP WebhostingRedirect melalui 192.168.101.31: 80. Kebun ini hanya digunakan untuk tujuan pengalihan, itu memaksa semua lalu lintas dari HTTP ke HTTPS.
Diagram sebelumnya menjelaskan permintaan SSL Let's Encrypt Certificate untuk domain tersebut test1.zevenet.es sebagai berikut:
1. Permintaan sertifikat dikirim dari penyeimbang beban itu sendiri ke infrastruktur Let's Encrypt.
2. Mari mengenkripsi mendeteksi Permintaan Sertifikat SSL baru untuk test1.zevenet.es
3. Mari mengenkripsi menjalankan resolusi IP DNS untuk host yang diminta: test1.zevenet.es memeriksa bahwa hasilnya adalah IP publik, IP asal yang sama yang memulai permintaan.
4. Pada titik ini Mari mengenkripsi mengumumkan ke letsencryptz skrip (webroot cerbot) yang diperlukan untuk membuat file dengan a HASH di jalur publik http://test1.zevenet.es/.well-know/acme-challenge/ (80 TCP Port), Direktori lokal /usr/local/zevenet/app/letsencryptz/webroot/.well-known/acme-challenge/. Kemudian, letsencryptz mengkonfigurasi layanan sementara untuk membuat file ini dapat diakses dari Internet (pertanian WebhostingRedirect akan dimodifikasi untuk tujuan ini. Jika belum ada tambak yang sudah dikonfigurasi letsencryptz akan membuat temporal di VIP dan Port ini).
6. Sesegera letsencryptz mengkonfirmasi pembuatan layanan sementara, Lets Encrypt server memverifikasi bahwa file validasi temporal telah dibuat dan HASH konten sudah benar.
7. Akhirnya, Let's Encrypt server membalas permintaan pertama dengan sertifikat yang sudah dibuat untuk Nama yang umum (CN) test1.zevenet.es.
8. Zevenet akan menyimpan sertifikat yang sudah dibuat di jalur lokal / usr / local / zevenet / config / dan siap dikonfigurasi di tambak WebHosting.
Pada tahap ini, sertifikat Let's Encrypt baru akan digunakan untuk layanan virtual HTTPS.
Mari Enkripsi Perintah Otomasi
Seperti dijelaskan, letsencryptz skrip akan mengotomatiskan tindakan yang diperlukan untuk mengelola sertifikat SSL Anda seperti membuat, memperbarui, memusnahkan, atau mendaftar, antara lain. Temukan di bawah perintah yang tersedia.
root@zva6k:~# letsencryptz letsencryptz description: letsencryptz is a let's encrypt (certbot) wrapper with minimal parameters ready to manage Let's Encrypt certificates for ZEVENET https profiles. Take into account that this wrapper uses certbot webroot feature so the public Let's encrypt architecture requires to connect with a local Virtual IP and port (TCP 80 by default) in order to do a request validation for the requested domain, so as soon as the "obtain" param is used, this script will configure an HTTP farm which will be accessed by Let's encrypt for verification purpose, this configuration is done automatically by this script itself, only ensure that the used Virtual IP and HTTP port 80 is not used by any another load balanced farm, and also ensure that the DNS resolution for the requested domain is reachable from let's encrypt system. usage: /usr/local/zevenet/bin/letsencryptz <action> <commands> action: --obtain | --destroy | --renew | --list | --listconf | --help --obtain: Request new Certificates using webroot cert-bot module. commands: --vip <Virtual IP> --farm <Farm Name> --domain <domain1> --domain <domain2> --domain <domainN> --test --vip: The Virtual IP already configured were to publish a temporal web server, this will be connected by let's encrypt public servers to verify the certificate request. The Virtual IP has to be free on the 80 port in order to be bound by a local process, if it isn't free then use --farm instead. --farm: The farm name which configures a temporal Service called "letsencryptz", if no farm is used a temporal farm called "letsencryptZevenet" will be configured in the selected Virtual IP. --domain: The domain which requests the Certificate for, i.e. www.mycompany.com. --test: Optional parameter, if used the certificate is requested for test purpose. --destroy: Revoke and delete the indicated Certificate Name, the action is rejected if the given certificate is in use by a farm. commands: --certname <Certificate Name> --certname: Certificate Name, this value can be obtained from the action --list. --renew: Renew the certificates near to expiry, no commands needed commands: --test --forcerestart --vip <Virtual IP> --farm <Farm Name> --test: Optional parameter, if used a dry-run is executed, the renew of the certificates is simulated. --forcerestart: Optional parameter, if used the farms that are using the renewed certificates will be restarted in order to apply the changes. --vip: The Virtual IP already configured where to publish a temporal web server, this will be connected by let's encrypt public servers to verify the certificate renew. The Virtual IP has to be free on the 80 port in order to be bound by a local process, if it isn't free then use --farm instead. --farm: The farm name which configures a temporal Service called "letsencryptz", if no farm is used a temporal farm called "letsencryptZevenet" will be configured in the selected Virtual IP. --list: List all the local certificates managed by let's encrypt and the status, no commands needed. --listconf: List the Zevenet let's encrypt configuration module (check global.conf file), no commands needed. --help: Obtain this help.
Ini akan memakan waktu beberapa saat pertama kali letsencryptz dijalankan karena sistem akan menginstal dependensi yang tidak terselesaikan secara otomatis, juga tinjauan konfigurasi dilakukan sebelum mulai menggunakannya, Let's Encrypt meminta akun email atau tujuan kontak yang terkait dengan sertifikat, akun email ini akan digunakan selama tindakan apa pun yang dilakukan terhadap sistem Let's Encrypt, email ini dapat dikonfigurasi di file konfigurasi utama /usr/local/zevenet/config/global.conf, direktif $ le_email.
Beberapa contoh penggunaan ditunjukkan di bawah ini.
Zevenet Let's Encrypt pembuatan sertifikat
Perintah ini meminta sertifikat baru untuk domain test2.zevenet.es. Perhatikan bahwa VIP yang diberikan adalah yang internal, yang lalu lintasnya harus disambungkan dari IP publik ke internal. Jika Let's Encrypt tidak dapat menjangkau layanan ini, permintaan akan ditolak.
root@zva6k:~# letsencryptz --obtain --vip 192.168.101.31 --domain test2.zevenet.es WARNING: No farm name specified, a temporal farm with name letsencryptZevenet will be created in VIP 192.168.101.31 port 80. Configuring farm for let's encrypt Certificate Name verification Obtaining Certificate for domains test2.zevenet.es... Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator webroot, Installer None Obtaining a new certificate Non-standard path(s), might not work with crontab installed by your operating system package manager Certificate Request for the domain(s) test2.zevenet.es OK Created Certificate name test2.zevenet.es in PEM format ready for HTTPS profile Destroying webroot configuration for the farm letsencryptZevenet Deleting already configuration for letsencryptZevenet, service letsencryptz Restarting farms using renewed certificates:
Zevenet Let's Encrypt daftar sertifikat
Eksekusi perintah ini akan menampilkan sertifikat saat ini yang dikelola oleh sistem Zevenet Let's Encrypt.
root@zva6k:~# letsencryptz --list Listing all available certificates for the current configuration in config dir /usr/local/zevenet/config/letsencrypt/ Saving debug log to /var/log/letsencrypt/letsencrypt.log Certificate Name: test1.zevenet.es Domain(s): test1.zevenet.es Expiry Date: 2019-09-19 10:48:02+00:00 (VALID: 77 days) Pem Certificate file: /usr/local/zevenet/config/test1_zevenet_es.pem Certificate Name: test3.zevenet.es Domain(s): test3.zevenet.es Expiry Date: 2019-09-26 06:32:52+00:00 (VALID: 83 days) Pem Certificate file: /usr/local/zevenet/config/test3_zevenet_es.pem
Mempertimbangkan Field Nama sertifikat, bidang ini akan dikenali oleh bungkus letsencryptz sebagai –Certname.
Zevenet Let's Encrypt perpanjangan sertifikat
Perintah sebelumnya memeriksa apakah ada sertifikat yang sudah dibuat yang membutuhkan pembaruan, dalam hal ini pembaruan akan dilakukan secara otomatis. Mempertimbangkan bahwa jika sertifikat yang diperbarui sedang digunakan, restart pertanian akan diperlukan untuk menerapkan perubahan, silakan gunakan opsi –Forcerestart jika Anda ingin letsencryptz restart semua peternakan yang diperlukan untuk menerapkan perubahan.
root@zva6k:~# letsencryptz --renew --vip 192.168.101.31 Renewing all the required certificates Saving debug log to /var/log/letsencrypt/letsencrypt.log Cert not yet due for renewal Cert not yet due for renewal
Zevenet Let's Encrypt penghapusan sertifikat
Perintah ini mencabut dan menghapus sertifikat yang diberikan. Jika sistem mendeteksi bahwa sertifikat yang dipilih sedang digunakan oleh HTTPS farm apa pun, tindakan tersebut akan ditolak, dalam contoh di atas tindakan penghapusan ditolak karena sertifikat tersebut digunakan oleh tambak testhttps.
root@zva6k:~# letsencryptz --destroy --certname test3.zevenet.es Revoking and deleting certificate(s) test3.zevenet.es for the current configuration... This file can't be deleted because is used by the farm(s): testhttps
Segera setelah sertifikat dikeluarkan dari tambak, tindakan akan dilakukan:
root@zva6k:~# letsencryptz --destroy --certname test3.zevenet.es Revoking and deleting certificate(s) test3.zevenet.es for the current configuration... Saving debug log to /var/log/letsencrypt/letsencrypt.log Deleted certificate(s) test3.zevenet.es in path /usr/local/zevenet/config/test3_zevenet_es.pem
Migrasi Let's Encrypt Sertifikat ke Zevenet
Zevenet Load balancer menyimpan semua file konfigurasi certbot di jalur lokal / usr / local / zevenet / config / letsencrypt /. Untuk memindahkan file konfigurasi certbot yang ada (secara default di / etc / letsencrypt) dari Server lain ke Zevenet, Anda hanya perlu membuat tarball (file tar.gz) dari direktori konfigurasi yang ada ini di server Anda dan membuka kompresi konten di jalur konfigurasi Zevenet Let's Encrypt. Terakhir, pertimbangkan untuk memodifikasi variabel $ le_email dalam file global.conf ke email yang sama yang digunakan dalam permintaan sebelumnya.
Mari dukungan Enkripsi Sertifikat Clustering
Plugin Zevenet Let's Encrypt didukung sepenuhnya dengan layanan Zevenet Cluster. Semua tindakan Let's Encrypt disimpan dalam file konfigurasi yang direplikasi oleh Zevenet Cluster Service, jadi setiap tindakan yang dilakukan di MASTER simpul akan direplikasi ke BUDAK simpul secara otomatis, tetapi tindakan apa pun dijalankan di BUDAK node yang terkait dengan Let's Encrypt akan dibuang untuk menghindari desinkronisasi.
Mari Enkripsi sertifikat, perpanjangan otomatis
Plugin Zevenet Let's Encrypt dapat dikonfigurasi untuk memeriksa setiap hari jika beberapa sertifikat memerlukan pembaruan, jika sistem memperbarui secara otomatis sertifikat yang diberikan dan digunakan oleh beberapa pertanian, maka pertanian akan dimulai ulang secara otomatis untuk menerapkan perubahan sertifikat.
Untuk mengonfigurasi pembaruan otomatis, silakan lakukan hal berikut:
Buat file cron berikut /etc/cron.d/letsencryptz dengan konten berikut:
root@zva6k:~# cat /etc/cron.d/letsencryptz 00 00 * * * root /usr/local/zevenet/bin/letsencryptz --renew --forcerestart --vip 192.168.101.31
Dengan konfigurasi ini, pemeriksaan pembaruan akan dilakukan setiap hari pada pukul 00:00 (tengah malam). Dan VIP 192.168.101.31 akan digunakan di port 80 untuk tujuan verifikasi dari Let's Encrypt System.
Referensi
Beberapa referensi yang digunakan dalam artikel ini adalah: