Nedávno jsem začal používat Let’s Encrypt SSL certifikáty pro svůj web cPanelTips.com. Přiznejme si to, Let’s Encrypt změnil způsob, jakým instalujeme certifikáty SSL.
Staré časy, kdy jste museli vyplnit své firemní a osobní údaje, vygenerovat CSR kód a poté jej odeslat registrátorovi SSL, abyste konečně čekali, až CRT code ware je pryč.
Let’s Encrypt je snadný a rychlý způsob instalace certifikátů SSL pro servery cPanel i prostý Linux. V mém případě byly tyto certifikáty SSL nainstalovány na CentOS 7.x 64 bitů a fungují perfektně, dokud nenastalo datum splatnosti pro obnovení SSL.
Když se však blížil čas obnovy ssl certifikátu Let’s Encrypt, všiml jsem si něčeho divného při spouštění možnosti ‚renew‘ pomocí příkazu ‚certbot‘. Viz níže.
[[email protected]:~]/usr/bin/certbot renew Saving debug log to /var/log/letsencrypt/letsencrypt.log Cert is due for renewal, auto-renewing... Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org Renewing an existing certificate Performing the following challenges: http-01 challenge for nixcp.com Waiting for verification... Cleaning up challenges Attempting to renew cert from /etc/letsencrypt/renewal/nixcp.com.conf produced an unexpected error: Failed authorization procedure. nixcp.com (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://nixcp.com/.well-known/acme-challenge/qtxjYi0a3FYNWpvqW-WTyZZzj848Yr0J6Sfx-75xDrg
Chyba byla jasná:
Klient nemá dostatečné oprávnění ::Neplatná odpověď z http://nixcp.com/.well-known/acme-challenge/
Ve stejném procesu obnovy jsem také viděl další chybu na jiném webu, který spravuji:
All renewal attempts failed. The following certs could not be renewed: /etc/letsencrypt/live/mysecondsite.com/fullchain.pem (failure) 1 renew failure(s), 0 parse failure(s) IMPORTANT NOTES: - The following errors were reported by the server: Domain: mysecondsite.com Type: unauthorized Detail: Invalid response from http://mysecondsite.com/.well-known/acme-challenge/YjP9PAcIEANeX50kZJ9vJ-lARkryYs7yFSLhKBU9Y_M: 404 Not Found To fix these errors, please make sure that your domain name was entered correctly and the DNS A record(s) for that domain contain(s) the right IP address. The A records were configured ok at the DNS server, and the first thing that came to my mind was that certbot was trying to connect to http://, instead of https://.
Nakonfiguroval jsem tyto dvě domény tak, aby používaly přesměrování 301 z http na https, testoval jsem toto běžící curl proti http, abych zjistil, zda není problém s přesměrováním 301, ale pokud vidím, problém nebyl.
curl -I http://nixcp.com/.well-known/acme-challenge/
Vrátil se stav přesměrování 301 OK, proč tedy certbot není schopen dosáhnout cílové URL?
Nevím, ale něco se povedlo. Vytvořil jsem výjimku pro přesměrování 301 z http na https a díky tomu proces obnovení certbota běžel bez problémů pro obě domény.
Toto byl kód, který jsem použil k přesměrování 301 všech z http na https s výjimkou .well-known adresáře, který používá Let’s Encrypt:
server { listen 80; server_name www.nixcp.com nixcp.com; # Redirect all requests to https location / { return 301 https://nixcp.com$request_uri; } # This rule excludes the .well-known directory from the 301 redirect. location /.well-known { root /var/www/nixcp.com; } }
Klíčem ke spuštění procesu obnovy certbota bez problémů bylo ponechání adresáře .well-known přístupného pomocí http. Poté jsem se ujistil, že ověřovací adresář používaný certbotem byl skutečně vytvořen:
mkdir -p /var/www/caneltips.com/.well-known/acme-challenge
Poté znovu spustím příkaz pro obnovení a výsledek je toto:
Bylo obnoveno v pořádku na další 3 měsíce! 🙂
Let’s Encrypt:Klient nemá dostatečné oprávnění ::Neplatná odpověď byla naposledy upravena:5. dubna 2017 Estebanem Borgesem