Cara menggunakan Mari mengenkripsi Sijil SSL untuk ladang HTTPS

DISIARKAN PADA 3 Julai 2019

Gambaran Keseluruhan

Let's Encrypt adalah pihak berkuasa sijil terbuka dan automatik yang menggunakan ACME (Persekitaran Pengurusan Sijil Automatik) protokol untuk menyediakan sijil TLS / SSL percuma kepada mana-mana pelanggan yang serasi. Sijil ini boleh digunakan untuk menyulitkan komunikasi antara pelayan web dan pengguna.

Tutorial ini akan membincangkan secara ringkas pihak berkuasa sijil dan bagaimana integrasi Zevenet berfungsi dengan Let's Encrypt, kemudian tinjau bagaimana Zevenet menggunakan certbot (Pelanggan ACME) untuk membuat komunikasi dengan Let's encrypt infrastruktur.

Zevenet Load Balancer 6.0.3 atau versi yang lebih tinggi termasuk pembungkus certbot kecil yang dipanggil letsencryptz untuk menggunakan kefungsian webroot Certbot, baris berikut menerangkan bagaimana pembungkus ini berfungsi, sila ambil perhatian ini untuk menjadikannya berfungsi dalam persekitaran pengeluaran.

Bagaimanakah enkripsi Let's encrypt berfungsi?

Sebagai penerangan fungsi webroot ringkas, plugin webroot berfungsi dengan membuat fail sementara untuk setiap domain yang anda minta dalam laluan fail Zevenet /usr/local/zevenet/app/letsencryptz/webroot/.well-known/acme-challenge/. Kemudian pelayan validasi Let's Encrypt membuat permintaan HTTP untuk mengesahkan bahawa DNS untuk setiap domain yang diminta diselesaikan ke pelayan yang menjalankan pembungkus letsencryptz dan fail sementara untuk tujuan pengesahan dapat diakses, rajah berikut menerangkan contoh sebenar:

Mari kita menyulitkan Zevenet

Dalam rajah sebelumnya, pengimbang Beban Zevenet berada di belakang Router / Firewall dengan alamat IP awam 185.79.20.147 (sebagai contoh), trafik HTTP dan HTTPS ditapis ke pengimbang beban dalaman dengan VIP 192.168.101.31 (sebagai contoh), di mana pengimbang beban dikonfigurasi dengan ladang yang berbeza 2:

Nama Ladang HTTPS WebHosting melalui 192.168.101.31:443. Ladang ini bertanggungjawab untuk menawarkan web hosting, pelayan web yang berbeza diterbitkan bersama-sama dengan ini ke Internet. Sebagai contoh, test1.zevenet.es, test2.zevenet.es, test3.zevenet.es sedang menguji laman web yang diterbitkan pada perkhidmatan maya ini antara lain.
Nama Ladang HTTP WebhostingRedirect melalui 192.168.101.31:80. Ladang ini hanya digunakan untuk tujuan redirect, ia memaksa semua lalu lintas dari HTTP ke HTTPS.

Gambar rajah sebelumnya menerangkan permintaan Sijil Let's Encrypt SSL untuk domain test1.zevenet.es seperti berikut:

1. Permintaan sijil dihantar dari pengimbang beban itu sendiri ke infrastruktur Let's Encrypt.
2. Mari encrypt mengesan Permintaan Sijil SSL baru untuk test1.zevenet.es
3. Mari kita enkripsi menjalankan resolusi IP DNS untuk hos yang diminta: test1.zevenet.es memeriksa bahawa hasilnya ialah IP awam, IP asal yang sama yang memulakan permintaan tersebut.
4. Pada ketika ini Mari kita mengenkripsi mengumumkan kepada letsencryptz skrip (webroot cerbot) yang perlu membuat fail dengan a HASH di jalan awam http://test1.zevenet.es/.well-know/acme-challenge/ (80 TCP Port), Direktori setempat /usr/local/zevenet/app/letsencryptz/webroot/.well-known/acme-challenge/. Kemudian, letsencryptz mengkonfigurasi perkhidmatan temporal untuk menjadikan file ini dapat diakses dari Internet (ladang WebhostingRedirect akan diubah suai untuk tujuan ini. Sekiranya tidak ada ladang sudah dikonfigurasikan letsencryptz akan membuat satu temporal dalam VIP dan Port ini).
6. Sebaik sahaja letsencryptz mengesahkan penciptaan perkhidmatan sementara, Lens Encrypt servers mengesahkan bahawa fail pengesahan temporal telah dibuat dan HASH kandungan adalah betul.
7. Akhirnya, pelayan Let's Encrypt membalas permintaan pertama dengan sijil yang telah dibuat untuk Nama yang selalu digunakan (CN) test1.zevenet.es.
8. Zevenet akan menyimpan sijil yang telah dibuat di jalan setempat / usr / local / zevenet / config / dan ia bersedia untuk dikonfigurasikan di ladang WebHosting.

Pada peringkat ini, sijil Let's Encrypt baru akan digunakan untuk perkhidmatan maya HTTPS.

Mari Enkripsi Perintah Automasi

Seperti yang diterangkan, letsencryptz skrip akan mengautomasikan tindakan yang diperlukan untuk menguruskan sijil SSL anda seperti membuat, memperbaharui, memusnahkan atau menyenaraikan, antara lain. Cari di bawah arahan yang ada.

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.


Ia akan memakan masa pertama kali letencryptz dijalankan kerana sistem akan memasang dependensi yang tidak dapat diselesaikan secara automatik, juga tinjauan konfigurasi dilakukan sebelum mula menggunakannya, Let's Encrypt meminta akaun e-mel atau tujuan hubungan yang berkaitan dengan sijil, akaun e-mel ini akan digunakan sepanjang tindakan yang dilakukan terhadap sistem Let's Encrypt, e-mel ini dapat dikonfigurasi dalam fail konfigurasi utama /usr/local/zevenet/config/global.conf, arahan $ le_email.

Beberapa contoh penggunaan ditunjukkan di bawah.

Zevenet Let's Encrypt pembuatan sijil

Perintah ini meminta sijil baru untuk domain test2.zevenet.es. Perhatikan bahawa VIP yang diberikan akan menjadi yang dalaman, lalu lintas mana yang harus dilampirkan dari IP awam ke yang dalaman. Sekiranya Let's Encrypt tidak dapat mencapai perkhidmatan 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: 

Penyenaraian sijil Zevenet Let's Encrypt

Pelaksanaan perintah ini akan menunjukkan sijil semasa yang dikendalikan 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


Pertimbangkan Bidang Nama Sijil, bidang ini akan diiktiraf oleh pembalut letsencryptz sebagai - nama pengguna.

Pembaharuan sijil Zevenet Let's Encrypt

Pemeriksaan sebelum ini jika ada sijil yang sudah dihasilkan memerlukan pembaharuan, dalam hal ini pembaharuan akan dilakukan secara otomatis. Sila ambil perhatian bahawa jika sijil yang diperbaharui digunakan dalam pemulihan ladang akan diperlukan untuk menerapkan perubahan, sila gunakan pilihan –Untuk memulakan jika anda mahu letsencryptz mulakan semula semua ladang yang diperlukan untuk memohon 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 sijil

Perintah ini membatalkan dan memadamkan perakuan yang diberikan. Sekiranya sistem mengesan bahawa sijil yang dipilih sedang digunakan oleh mana-mana ladang HTTPS, tindakan itu akan ditolak, dalam contoh di atas tindakan padam ditolak kerana sijil digunakan oleh ladang 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

Sebaik sahaja perakuan itu tidak ditugaskan dari ladang, tindakan itu 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

Migrasikan Sijil Let's Encrypt ke Zevenet

Zevenet Load balancer menyelamatkan semua fail konfigurasi certbot di jalan setempat / usr / local / zevenet / config / letsencrypt /. Untuk memindahkan fail konfigurasi certbot anda yang sedia ada (secara lalai dalam / etc / letsencryptdari Server lain ke Zevenet, anda hanya perlu membuat tarball (fail tar.gz) dari direktori konfigurasi yang ada di pelayan anda dan membebaskan kandungan di laluan konfigurasi Zevenet Let's Encrypt. Akhirnya, pertimbangkan untuk mengubah pemboleh ubah $ le_email dalam fail global.conf ke email yang sama yang digunakan dalam permintaan sebelumnya.

Mari Encrypt Sijil Penggabungan sokongan

Plugin Zevenet Let's Encrypt disokong sepenuhnya dengan perkhidmatan Zevenet Cluster. Semua tindakan Let's Encrypt disimpan dalam fail konfigurasi yang direplikasi oleh Zevenet Cluster Service, jadi tindakan apa pun yang dilaksanakan di MASTER nod akan direplikasi kepada SLAVE nod secara automatik, tetapi apa-apa tindakan yang dilaksanakan di SLAVE nod yang berkaitan dengan Let's Encrypt akan dibuang untuk mengelakkan penyah sinkronisasi.

Mari Encrypt sijil pembaharuan automatik

Plugin Zevenet Let's Encrypt dapat dikonfigurasi untuk memeriksa setiap hari jika beberapa sijil memerlukan pembaharuan, sekiranya sistem memperbaharui sijil yang diberikan secara automatik dan ia digunakan oleh beberapa ladang, maka ladang akan dimulakan semula secara automatik untuk menerapkan pertukaran sijil.

Untuk mengkonfigurasi pembaharuan automatik sila lakukan perkara berikut:

Buat fail cron berikut /etc/cron.d/letsencryptz dengan kandungan 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 pembaharuan akan dilakukan setiap hari pada pukul 00:00 (tengah malam). Dan VIP 192.168.101.31 akan digunakan di port 80 untuk tujuan pengesahan dari Let's Encrypt System.

Rujukan

Beberapa rujukan yang digunakan dalam artikel ini adalah:

Webroot dan Certbot
Bagaimana Mari Enkripsi Berfungsi

Berkongsi pada:

Dokumentasi di bawah syarat-syarat Lesen Dokumentasi Bebas GNU.

Adakah artikel ini berguna?

Artikel yang berkaitan