Sådan bruges Lad os kryptere SSL-certifikater til HTTPS-gårde

SENDT AF Zevenet | 3. juli 2019

Oversigt

Lad os kryptere er en åben og automatiseret certifikatmyndighed, der bruger ACME (Automatisk certifikatstyringsmiljø) -protokol til at levere gratis TLS / SSL-certifikater til enhver kompatibel klient. Disse certifikater kan bruges til at kryptere kommunikation mellem webservere og brugere.

Denne vejledning vil kort diskutere certifikatmyndigheder og hvordan Zevenet-integration fungerer med Let's Encrypt og derefter gennemgå, hvordan Zevenet bruger certbot (ACME-klient) for at skabe kommunikation med Lad os kryptere infrastruktur.

Zevenet Load Balancer 6.0.3 eller nyere version inkluderer en lille certbot-indpakning kaldet letsencryptz For at bruge Certbot webroot-funktionaliteten, forklarer følgende linjer, hvordan denne indpakning fungerer, vær opmærksom på alt dette for at få det til at fungere i produktionsmiljøer.

Hvordan fungerer Lad os kryptere validering?

Som en kort webroot-funktionalitetsbeskrivelse fungerer webroot-plugin'et ved at oprette en midlertidig fil for hver af de ønskede domæner i Zevenet-filbanen /usr/local/zevenet/app/letsencryptz/webroot/.well-known/acme-challenge/. Derefter foretager Let's Encrypt-valideringsserver HTTP-anmodninger for at validere, at DNS for hvert anmodet domæne løser den server, der kører letsencryptz-indpakning, og den midlertidige fil til valideringsformål er tilgængelig, følgende diagram beskriver et rigtigt eksempel:

Lad os kryptere Zevenet

I det foregående diagram ligger Zevenet Load balancer bag en Router / Firewall med en offentlig IP-adresse 185.79.20.147 (som et eksempel), HTTP og HTTPS trafikken er nede til intern belastningsbalancer med VIP 192.168.101.31 (som et eksempel), hvor belastningsbalanceren er konfigureret med 2 forskellige gårde:

HTTPS Farmens navn WebHosting via 192.168.101.31: 443. Denne gård er ansvarlig for at tilbyde web hosting, forskellige webservere udgives sammen med dette til internettet. For eksempel, test1.zevenet.es, test2.zevenet.es, test3.zevenet.es tester websider udgivet på denne virtuelle service blandt andre.
HTTP Farmens navn WebhostingRedirect via 192.168.101.31: 80. Denne gård bruges kun til omdirigering, det tvinger hele trafikken fra HTTP til HTTPS.

Det forrige diagram beskriver en SSL-anmodning om kryptering af certifikat til domænet test1.zevenet.es som følger:

1. En certifikatanmodning sendes fra selve load balancer til Let's Encrypt-infrastrukturen.
2. Lad os kryptere registrerer den nye SSL-certifikatanmodning om test1.zevenet.es
3. Lad os kryptere køre en DNS IP-opløsning for den anmodede vært: test1.zevenet.es kontrollerer, at resultatet er den offentlige IP, den samme oprindelses-IP, der indledte anmodningen.
4. På dette tidspunkt Lad os kryptere annoncerer til letsencryptz script (webroot cerbot), at den skal oprette en fil med en HASH i den offentlige vej http://test1.zevenet.es/.well-know/acme-challenge/ (80 TCP Port), lokal telefonbog /usr/local/zevenet/app/letsencryptz/webroot/.well-known/acme-challenge/. Derefter, letsencryptz konfigurerer en tidsmæssig tjeneste for at gøre denne fil tilgængelig fra internettet (gården WebhostingRedirect vil blive ændret til dette formål. Hvis der ikke er en gård, der allerede er konfigureret letsencryptz vil skabe en tidsmæssig i denne VIP og Port).
6. Så snart som letsencryptz bekræfter den midlertidige serviceoprettelse, Lets Encrypt servers bekræfter, at den midlertidige valideringsfil er blevet oprettet og HASH indhold er korrekt.
7. Endelig Lad os kryptere servere besvare den første anmodning med det allerede oprettede certifikat til Almindeligt navn (CN) test1.zevenet.es.
8. Zevenet gemmer det allerede oprettede certifikat i den lokale vej / Usr / local / zevenet / config / og det er klar til at blive konfigureret i gården WebHosting.

På dette tidspunkt vil det nye Let's Encrypt-certifikat blive brugt til den virtuelle HTTPS-tjeneste.

Lad os kryptere automatiseringskommandoer

Som beskrevet, den letsencryptz script vil automatisere de nødvendige handlinger til at administrere dine SSL-certifikater som f.eks. oprette, fornye, ødelægge eller liste blandt andre. Find under de tilgængelige kommandoer.

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.


Det vil tage noget tid første gang, at letsencryptz udføres, fordi systemet vil installere uløste afhængigheder automatisk, og der foretages også en konfigurationsanmeldelse, før den begynder at bruge den. Lad os kryptere anmoder om en e-mail-konto eller kontaktformål relateret til certifikaterne, denne e-mail-konto vil blive brugt sammen med enhver handling, der udføres mod Let's Encrypt-system, denne e-mail kan konfigureres i hovedkonfigurationsfilen /usr/local/zevenet/config/global.conf, direktiv $ le_email.

Nogle anvendelseseksempler er vist nedenfor.

Zevenet Lad os kryptere oprettelse af certifikat

Denne kommando anmoder om et nyt certifikat for domænet test2.zevenet.es. Tag i betragtning, at den givne VIP er den interne, hvilken trafik skal nattes fra den offentlige IP til den interne. Hvis Let's Encrypt ikke er i stand til at nå denne tjeneste, afvises anmodningen.

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 Lad os kryptere notering af certifikater

Udførelsen af ​​denne kommando viser de aktuelle certifikater, der administreres af Zevenet Let's Encrypt-system.

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


Tag marken i betragtning Certifikatnavn, dette felt genkendes af letsencryptz-indpakningen som –Certnavn.

Zevenet Lad os kryptere fornyelse af certifikat

Den forrige kommando kontrollerer, om et allerede genereret certifikat kræver en fornyelse, i hvilket tilfælde fornyelsen udføres automatisk. Vær opmærksom på, at hvis det fornyede certifikat er i brug, vil en farm-genstart blive krævet for at anvende ændringen, så brug muligheden –Forcerestart hvis du vil letsencryptz genstarter alle de krævede bedrifter for at anvende ændringerne.

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 Lad os kryptere sletning af certifikat

Denne kommando ophæver og sletter det givne certifikat. I tilfælde af at systemet registrerer, at det valgte certifikat i øjeblikket er i brug af en hvilken som helst HTTPS-gård, vil handlingen blive afvist, i eksemplet ovenfor bliver sleteaktionen afvist, fordi certifikatet er i brug af gården 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

Så snart certifikatet ikke er tildelt fra gården, udføres handlingen:

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

Overfør Lad os kryptere certifikater til Zevenet

Zevenet Load balancer gemmer alle konfigurationsfilerne til certbot i den lokale sti / Usr / local / zevenet / config / letsencrypt /. For at flytte dine eksisterende certbot-konfigurationsfiler (som standard i / Etc / letsencrypt) af en anden server til Zevenet, behøver du kun at oprette en tarball (tar.gz-fil) af denne eksisterende konfigurationsmappe på din server og unkomprimere indholdet i Zevenet Lad os kryptere konfigurationsstien. Endelig overvej at ændre variablen $ le_email i filen global.conf til den samme e-mail, der blev brugt i de tidligere anmodninger.

Lad os kryptere understøttelse af Clustering af certifikater

Zevenet Let's Encrypt-plugin understøttes fuldstændigt med Zevenet Cluster-tjenesten. Alle Let's Encrypt-handlinger gemmes i en konfigurationsfil replikeret af Zevenet Cluster Service, så enhver handling, der udføres i MASTER noden replikeres til SLAVE node automatisk, men enhver handling udført i SLAVE knude relateret til Let's Encrypt vil blive kasseret for at undgå desynkronisering.

Lad os kryptere automatisk fornyelse af certifikater

Zevenet Let's Encrypt-plugin kan konfigureres for at kontrollere dagligt, om noget certifikat har brug for fornyelse, i tilfælde af at systemet automatisk fornyer et givet certifikat, og det er i brug af en eller anden gård, så startes gården automatisk for at anvende certifikatændring.

For at konfigurere den automatiske fornyelse skal du gøre følgende:

Opret følgende cron-fil /etc/cron.d/letsencryptz med følgende indhold:

root@zva6k:~# cat /etc/cron.d/letsencryptz
00 00 * * *	root	/usr/local/zevenet/bin/letsencryptz --renew --forcerestart --vip 192.168.101.31

Med denne konfiguration udføres fornyelseskontrollen dagligt kl. 00:00 (midnat). Og VIP 192.168.101.31 vil blive brugt i porten 80 til verifikationsformål fra Let's Encrypt System.

Referencer

Nogle referencer brugt i denne artikel er:

Webroot og Certbot
Hvordan lad os kryptere fungerer

Del på:

Dokumentation i henhold til GNU Free Documentation License.

Var denne artikel til hjælp?

Relaterede artikler