Vygenerovať správny SSL certifikát je úloha, s ktorou sa stretne každý, kto sa stará o bezpečnost svojich stránok. Vygenerovanie certifikátu a jeho obnova sa však deje tak jeden až dva krát do roka a človek má tendenciu postup zabudnúť. A preto som si nachystal nasledovný postup, ktorý mi pomáha vygenerovať prípadne obnoviť SSL certifikát bez zbytočného zdržiavania. Verím, že pomôže aj vám.
Ak generovanie certifikátu robíte prvý krát, nainštalujte si v Debiane balík ssl-cert
apt-get install ssl-cert
Následne ja zvyknem upraviť štandardnú dĺžku kľúča v súbore /usr/share/ssl-cert/ssleay.cnf
[ req ] #default_bits = 2048 default_bits = 4096
Aby som mal príkazy na generovanie SSL certifikátu pekne uložené v histórii môjho shellu a boli príkazy univerzálne, zvyknem si nastaviť premennú. Potom stačí zmeniť hodnotu premennej a uložené univerzálne príkazy vyvolať cez Ctrl+r z histórie.
NIECO=uptime.sk
Teraz konečne vygenerujeme certifikát, ktorý zatiaľ nebude podpísaný certifikačnou autoritou
make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/nginx/ssl/$NIECO.crt
Potom nasleduje manuálne rozdelenie CRT súboru na privátnu a verejnú časť. Toto oskriptované zatiaľ nemám.
Do súboru $NIECO.key patrí časť označená ako —BEGIN PRIVATE KEY— a do súboru $NIECO.pem patrí časť označená ako —BEGIN CERTIFICATE—. Kontrola:
vim $NIECO.crt $NIECO.key $NIECO.pem.selfsigned head -n1 $NIECO.key $NIECO.pem.selfsigned ==> uptime.sk.key <== -----BEGIN PRIVATE KEY----- ==> uptime.sk.pem <== -----BEGIN CERTIFICATE-----
Po tomto rozdelení môžete súbor $NIECO.crt odstrániť
rm -f $NIECO.crt
Ja osobne zvyknem používať jeden SSL certitikát pre viac subdomén, preto generujem SSL certifikát aj s alternatívnymi menami, ktoré mi toto umožnia.
Zatial som neprišiel na to, ako tieto parametre zadať na príkazovom riadku, preto to robím tak, že upravím v aktuálnom adresári konfiguračný súbor ./openssl.cnf a na chvíľu tam pridám hodnoty natvrdo:
[ req ] req_extensions = v3_req [ v3_req ] subjectAltName = @alt_names [alt_names] DNS.1 = *.uptime.sk DNS.2 = uptime.sk
Teraz už konečne vygenerujeme CSR – Certificate Signing Request
openssl req -config ./openssl.cnf -new -key $NIECO.key -out $NIECO.csr
Tento $NIECO.csr teraz musíte nechať podpísať svojej certifikačnej autorite. Ja s obľubou využívam služby certifikačnej autority CAcert.org, pretože podpísanie SSL certifikátu robia zadarmo. Jediná nevýhoda je tá, že platnosť certifikátu je na začiatku pol roka, takže častejšie musíte obnoviť svoje certifikáty. Ale to až tak veľa úsilia nestojí a podarilo sa mi to aktualizáciu SSL certifikátov automatizovať.
Podpísanie nášho CSR spravíme tak, že po zaregistrovaní a prihlásení request odošleme na adrese CAcert.org. Výstup, ktorý nám vygenerujú si uložíme do súboru $NIECO.pem.
cat > $NIECO.pem
V prípade potreby si parametre môžete skontrolovať takto:
openssl req -in $NIECO.csr -text | grep -A 1 -e '\(CN\|Alter\)' openssl x509 -in $NIECO.pem -text | less -S echo '' | openssl s_client -connect mail.uptime.sk:443 |& less -S