SPOJE.NET

Technická dokumentace

Uživatelské nástroje

Nástroje pro tento web


howto:hosting:ssl

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
howto:hosting:ssl [2017/10/19 20:42] – [Priklad pro pouziti bez soucinnosti stavajiciho webserveru] harviehowto:hosting:ssl [2024/10/30 16:24] (aktuální) gandalf
Řádek 1: Řádek 1:
 ====== SSL certifikáty ====== ====== SSL certifikáty ======
  
-Zde popisuji, jak získat, nainstalovat a používat služby, zabezpečené pomocí TLS - [[wp>cs:TLS]]. Pokud máš problém s TLS a nevíš proč, tak použij [[https://www.ssllabs.com/ssltest/|SSLLabs SSLTest]]!+Zde popisuji, jak získat, nainstalovat a používat služby, zabezpečené pomocí TLS - [[wp>cs:TLS]]. Pokud máš problém s TLS a nevíš proč, tak použij testy! [[https://www.ssllabs.com/ssltest/|SSLLabs SSLTest pro HTTPS]], pripadne [[https://www.checktls.com/|CheckTLS pro mailservery]]. 
 + 
 +Testy lze take automatizovat skriptem [[https://testssl.sh/|testssl.sh]], nebo prikazem: 
 +<code bash>echo -n | openssl s_client -starttls smtp -crlf -connect localhost:25</code>
  
 ===== CertBot ===== ===== CertBot =====
Řádek 11: Řádek 14:
 <code bash> <code bash>
 certbot certonly --webroot --webroot-path /srv/http/ \ certbot certonly --webroot --webroot-path /srv/http/ \
- --renew-hook "systemctl restart apache2 postfix dovecot" \+ --renew-hook "systemctl reload-or-try-restart apache2 postfix dovecot" \
  --rsa-key-size 4096 \  --rsa-key-size 4096 \
  -d harvie.cz -d www.harvie.cz -d blog.harvie.cz -d wiki.harvie.cz  -d harvie.cz -d www.harvie.cz -d blog.harvie.cz -d wiki.harvie.cz
Řádek 25: Řádek 28:
 RewriteRule .well-known/(.*) /srv/http/.well-known/$1 [L] RewriteRule .well-known/(.*) /srv/http/.well-known/$1 [L]
 </code> </code>
 +
 +==== Rozšíření stávajícího certifikátu ====
 +
 +Již vygenerovaný Letsencrypt cerifikát můžeme rozšířit o další doménu nebo naopak změnit výčet dalších domén kdykoliv. Nutností je pouze zachování hlavní domény (ta co je uvedená za prvním parametrem -d)
 +Výčet domén, které chceme přidávat, uvadíme v dalších pořadí vždy s parametrem -d
 +
 +<code>
 +root@s1:~# certbot certonly --webroot --webroot-path /var/www/nextcloud/        --renew-hook "systemctl reload-or-try-restart apache2"  --rsa-key-size 4096     -d s1.spojenet.cz -d vysehrad.spoje.net
 +Saving debug log to /var/log/letsencrypt/letsencrypt.log
 +
 +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 +An RSA certificate named s1.spojenet.cz already exists. Do you want to update
 +its key type to ECDSA?
 +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 +(U)pdate key type/(K)eep existing key type: u
 +
 +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 +You have an existing certificate that contains a portion of the domains you
 +requested (ref: /etc/letsencrypt/renewal/s1.spojenet.cz.conf)
 +
 +It contains these names: s1.spojenet.cz
 +
 +You requested these names for the new certificate: s1.spojenet.cz,
 +vysehrad.spoje.net.
 +
 +Do you want to expand and replace this existing certificate with the new
 +certificate?
 +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 +(E)xpand/(C)ancel: e
 +Renewing an existing certificate for s1.spojenet.cz and vysehrad.spoje.net
 +
 +Successfully received certificate.
 +Certificate is saved at: /etc/letsencrypt/live/s1.spojenet.cz/fullchain.pem
 +Key is saved at:         /etc/letsencrypt/live/s1.spojenet.cz/privkey.pem
 +This certificate expires on 2024-08-20.
 +These files will be updated when the certificate renews.
 +Certbot has set up a scheduled task to automatically renew this certificate in the background.
 +
 +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 +If you like Certbot, please consider supporting our work by:
 + * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 + * Donating to EFF:                    https://eff.org/donate-le
 +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 +
 +</code>
 +
  
 ==== Priklad pro pouziti bez soucinnosti stavajiciho webserveru ==== ==== Priklad pro pouziti bez soucinnosti stavajiciho webserveru ====
Řádek 36: Řádek 85:
  --pre-hook "systemctl stop apache2" \  --pre-hook "systemctl stop apache2" \
  --post-hook "systemctl start apache2" \  --post-hook "systemctl start apache2" \
- --renew-hook "systemctl restart apache2 postfix dovecot" \+ --renew-hook "systemctl reload-or-try-restart apache2 postfix dovecot" \
  --rsa-key-size 4096 \  --rsa-key-size 4096 \
  -d harvie.cz -d www.harvie.cz -d blog.harvie.cz -d wiki.harvie.cz  -d harvie.cz -d www.harvie.cz -d blog.harvie.cz -d wiki.harvie.cz
Řádek 42: Řádek 91:
 ==== Automaticka obnova certifikatu ==== ==== Automaticka obnova certifikatu ====
  
-Obnova certifikatu se provadi prikazem ''certbot renew'', nicmene to neni potreba delat, ani davat do cronu. Soucasti instalace certbotu totiz uz je soubor ''/etc/cron.d/certbot'', ktery se o vse postara. Jen je potreba mit spravne nastavene hooky, aby se korektne restartovaly sluzby a vzdy po obnoveni nacetly novy certifikat. Hooky se zadavaji/upravuji pri prvotnim vytvareni certifikatu prikazem ''certbot certonly ...'' (viz. vyse). Nastaveni hooku a dalsich parametru procesu obnovy certifikatu lze overit v souborech ''/etc/letsencrypt/renewal/*.conf'' Napriklad renew hook je tam uveden v sekci ''[renewalparams]'' jako ''renew_hook = systemctl restart apache2 postfix dovecot''.+Obnova certifikatu se provadi prikazem ''certbot renew'', nicmene to neni potreba delat, ani davat do cronu. Soucasti instalace certbotu totiz uz je soubor ''/etc/cron.d/certbot'', ktery se o vse postara. Spousti se kazdy den 2x v nahodnou vterinu vzdy v ramci jedne hodiny po pulnoci i po poledni. 
 + 
 +Jen je potreba mit spravne nastavene hooky, aby se korektne restartovaly sluzby a vzdy po obnoveni nacetly novy certifikat. Hooky se zadavaji/upravuji pri prvotnim vytvareni certifikatu prikazem ''certbot certonly ...'' (viz. vyse). Nastaveni hooku a dalsich parametru procesu obnovy certifikatu lze overit v souborech ''/etc/letsencrypt/renewal/*.conf'' Napriklad renew hook je tam uveden v sekci ''[renewalparams]'' jako ''renew_hook = systemctl reload-or-try-restart apache2 postfix dovecot''.
  
  
Řádek 66: Řádek 117:
  
  
 +====== Nastavení služeb ======
  
-===== Nastavení Apache =====+===== Apache2 =====
  
 Zpravidla se používá pro každou doménu, kterou chceme zabezpečit, zvláštní IP adresa. Od verze Apache 2.2.12 a OpenSSL verze 0.9.8f je možné využívat jedinou IP adresu pro více domén s různými SSL certifikáty tzv. SNI (Server Name Indication -  [[http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI]])  Zpravidla se používá pro každou doménu, kterou chceme zabezpečit, zvláštní IP adresa. Od verze Apache 2.2.12 a OpenSSL verze 0.9.8f je možné využívat jedinou IP adresu pro více domén s různými SSL certifikáty tzv. SNI (Server Name Indication -  [[http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI]]) 
Řádek 97: Řádek 149:
 </code> </code>
  
 +===== Nginx =====
 +<code ini>
 +        location ^~ /.well-known/acme-challenge/ {
 +                allow all;
 +                default_type "text/plain";
 +                alias /var/www/acme-challenge/.well-known/acme-challenge/;
 +        }
 +</code>
  
 ==== Použítí SNI ==== ==== Použítí SNI ====
 +
 +<note warning>Pozor, SNI nedává dnes až tak moc velký smysl, protože letsencrypt dokáže vystavit společný certifikát až pro 100 různých domén. Takže pokud nejde o velký sdílený hosting, tak se často obejdeme i bez SNI. Ale do budoucna se snad bude podpora SNI zlepšovat,
 + takže nebude nutné se mu vyhybat.</note>
 +
  
 Pokud např. nemáme dostatek veřejných IP adres pro každou SSL doménu, můžeme využít SNI, tzn. certifikáty se budou brát podle jména domény a všechno poběží s jednou IP adresou. Nevýhoda tohoto řešení je, že starší prohlížeče nebo většina textových klientů bude mít potíže se zobrazením. Podrobnosti o SNI lze získat na [[wp>cs:SNI]] Pokud např. nemáme dostatek veřejných IP adres pro každou SSL doménu, můžeme využít SNI, tzn. certifikáty se budou brát podle jména domény a všechno poběží s jednou IP adresou. Nevýhoda tohoto řešení je, že starší prohlížeče nebo většina textových klientů bude mít potíže se zobrazením. Podrobnosti o SNI lze získat na [[wp>cs:SNI]]
Řádek 113: Řádek 177:
 Z hlediska SNI je nastavení virtualhostu uplně stejné, jako v předchozím případě, akorát se na jednu IP adresu na portu 443 binduje libovolný počet virtualů s ruzným ServerName a svojí definicí certifikátů. Z hlediska SNI je nastavení virtualhostu uplně stejné, jako v předchozím případě, akorát se na jednu IP adresu na portu 443 binduje libovolný počet virtualů s ruzným ServerName a svojí definicí certifikátů.
  
-<WRAP center round important 80%> + 
-POZOR: Pokud klient NEPODPORUJE SNI, pak mu Apache v uvedeném nastavení na portu 443 bude servírovat první virtualhost, který načte v konfiguraci, proto doporučuji dát jako první virtualhost nějakou základní webovkou, přístupnou pro všechny. Pokud máte každý virtualhost ve vlastním souboru, pak konfigurační soubor, který chcete servírovat klientům bez SNI, pojmenujte tak, aby byl v adresáři sites-enabled jako první v pořadí ! +<note important>POZOR: Pokud klient NEPODPORUJE SNI, pak mu Apache v uvedeném nastavení na portu 443 bude servírovat první virtualhost, který načte v konfiguraci, proto doporučuji dát jako první virtualhost nějakou základní webovkou, přístupnou pro všechny. Pokud máte každý virtualhost ve vlastním souboru, pak konfigurační soubor, který chcete servírovat klientům bez SNI, pojmenujte tak, aby byl v adresáři sites-enabled jako první v pořadí !</note> 
-</WRAP>+
  
 ===== Courier IMAP / POP ===== ===== Courier IMAP / POP =====
Řádek 165: Řádek 229:
 </code> </code>
  
 +==== Odkazy souvisejici se SSL ====
  
-====== Překonané nepotřebné informace ======+  * [[https://crt.sh]] - overovani historie SSL certifikatu
  
-===== Testování nainstalovaného certifikátu ===== 
  
-Nainstalovaný certifikát můžeme otestovat buď přímo v prohlížeči tj. https://vasedomena pokud prohlížeč nebude zobrazovat žádná varování a zároveň v adresním řádku bude vidět zelený zameček (chromium), modrý proužek se jménem domény (firefox) apod. je vše v pořáfku nainstalováno.+====== Překonané nepotřebné informace ======
  
-Ostatní služby můžeme testovat pomocí příkazu openssl - [[man>OpenSSL]]V případě postfixu použijeme tento příkaz +<note>Nasledujici sekce jsou dnes defakto zastaraleSelf-signed certifikaty a do znacne miry i placene certifkaty ziskavane pomoci CSR jsou dnes vetsinou nahrazeny letsencryptem a situace se ma v nasledujicim roce jeste zlepsit. Co se tyka bugu v implementacich SSL, tak ty samozrejme plynule mizi stejne jako se objevuji nove a je asi pod nasi rozlisovaci a casovou schopnost tady mit aktualni info.</note>
- +
-<code bash> +
-openssl s_client -starttls smtp -crlf -connect vasedomena:25 +
-</code> +
- +
-<note tip> +
-Pro komplexní otestování korektního nastavení SSL na serveruvčetně diagnostiky slabých šifer je možné provést pomocí skriptu **testssl.sh**. +
-jeho aktuální verzi naleznete na stejnojmenných stránkách [[https://testssl.sh/|testssl.sh]] +
-</note>+
  
 ===== Generování requestu ===== ===== Generování requestu =====
Řádek 264: Řádek 319:
  
 openssl x509 -noout -modulus -in test.crt | openssl md5 openssl x509 -noout -modulus -in test.crt | openssl md5
 +
 +===== Ověření certificate chainu pres OpenSSL =====
 +
 +openssl verify -verbose -CAfile le-root-ca.pem /etc/letsencrypt/live/domain.tld/chain.pem
  
  
howto/hosting/ssl.1508438537.txt.gz · Poslední úprava: 2017/10/19 20:42 autor: harvie