Cara menggunakan Let's encrypt SSL Certificates untuk HTTPS farms

DIKIRIM PADA 3 Juli 2019

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:

Mari mengenkripsi Zevenet

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:

Webroot dan Certbot
Bagaimana Let's Encrypt Bekerja

Bagikan ke:

Dokumentasi di bawah ketentuan Lisensi Dokumentasi Bebas GNU.

Apakah artikel ini berguna?

Artikel terkait