Výměna HTTPS certifikátu

IAM appliance vystavuje své služby na HTTPS rozhraní. Webové rozhraní je realizováno serverem nGinx. Při čisté instalaci nGinx (balíček iam-app-web-proxy) dochází k vygenerování self-signed certifikátu dle hostname serveru. Self-signed certifikát je pro většinu nasazení nevhodný, a je proto potřeba jej vyměnit.

Výměna HTTPS certifikátu
  1. Požadavky na certifikát a klíč.

  2. Nahrání privátního klíče a certifikátu (případně s chainem) do appliance.

  3. Výměna certifikátu a klíče.

  4. Uložení root certifikátu do úložiště důvěryhodných certifikátů.

  5. Restart služby iam-web-proxy a návazných služeb.

  6. Kontrola.

Požadavky na certifikát a klíč

  • Privátní klíč je ve formátu PEM bez hesla, velikost 2048b (v případě RSA klíče) a více.

  • Podpisový algoritmus certifikátu je alespoň SHA-256.

  • Certifikát je ve formátu x509 PEM, podporována jsou x509v3 rozšíření.

    • Certifikát serveru má vyplněno nejen CN, ale i x509 rozšíření subjectAltName, moderní webové prohlížeče už k CN velmi často vůbec nepřihlížejí.

    • Pokud je nutno dodat i certificate chain (mezilehlé certifikační autority), jsou jejich certifikáty umístěny ve stejném souboru, také ve formátu PEM. Pořadí certifikátů v souboru pak je shora dolů:

      1. Certifikát serveru.

      2. Certifikát CA, která vydala certifikát serveru.

      3. Případně další certifikáty CA jdoucí popořadě podle toho, jak jdou v chainu důvěry směrem nahoru.

Příklad souboru s privátním klíčem
[root@localhost secrets]# cat current_web_cert.key
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAwuOKM39s1uqEVq+ngNaGgqpPNAPfu1NF7GThfPGgCa3e0Xjf
/gRZZygwqMnWfPTcgxDkK43xWo95nMmnAzsjn5S9/PX1fP+Sb4AYn+a8EOaZxy9x
... zkráceno...
MjvCAQKBgBnOMJTEtWTAXtQo6gR5q5WSvGhv/xOg+VymOYNIiIoOg49dfieEtOCN
3D53ENWGL60+C4fkY6lQw1Vog2rJ5Gm16XA6iAxBNI1Wf6zrZsMmKbyPtXFHAyZc
imNeWy2jGCnsGft1diBBrgUxPCz1k+gLlWIvqs4Nr9tx+hzTR0sn
-----END RSA PRIVATE KEY-----
Příklad souboru s certifikátem serveru
[root@localhost secrets]# cat current_web_cert.crt
-----BEGIN CERTIFICATE-----
MIICzjCCAbagAwIBAgIUQbCKf99dSmVlucvY8TyQGVQieNgwDQYJKoZIhvcNAQEL
BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTIxMDEyMDE0NDAxMFoXDTIyMDEy
... zkráceno ...
SvOiau16nBSe5wHzFqX3M1HsJp9X+j3PjOtGPDqf3mG6/NYzgqFlHC0bWCnMEZtl
sGh4k0AB/W7AxTKN4KwgY7YaqFwcLZveHcbSSztlmNt9YXIhNXzWvuYIbuyhBMuW
04k=
-----END CERTIFICATE-----
// zde případně následují certifikáty CA z řetezu důvěry

Nahrání privátního klíče a certifikátu na server

Na server je nutno nahrát soubory pomocí protokolu SCP, na Linuxu běžným příkazem scp, na Windows například klientskou utilitou WinSCP. Pomocí vybrané utility nahrajte certifikát a klíč do adresáře na serveru, cílovým adresářem je /data/volumes/web-proxy/secrets/.

Výměna certifikátu a klíče

Nahráli jsme certifikát a klíč na server, máme zde tedy dva soubory nové (https_new.*) a dva původní (current_web_cert.*).

[root@localhost ~]# cd /data/volumes/web-proxy/secrets/
[root@localhost secrets]# ll
total 16
-rw-r--r--. 1 root root 1034 Jan 20 14:40 current_web_cert.crt
-rw-------. 1 root root 1675 Jan 20 14:40 current_web_cert.key
-rw-r--r--. 1 root root 1034 Jan 28 09:33 https_new.crt
-rw-------. 1 root root 1675 Jan 28 09:33 https_new.key

V adresáři /data/volumes/web-proxy/secrets/ zazálohujeme původní klíč a certifikát a nasadíme nové.

[root@localhost secrets]# cp current_web_cert.key current_web_cert.key.orig
[root@localhost secrets]# cp current_web_cert.crt current_web_cert.crt.orig

[root@localhost secrets]# mv https_new.crt current_web_cert.crt
mv: overwrite 'current_web_cert.crt'? y
[root@localhost secrets]# mv https_new.key current_web_cert.key
mv: overwrite 'current_web_cert.key'? y

Opravíme vlastnictví, práva a labely na souborech.

[root@localhost secrets]# chown root:root current_web_cert.crt current_web_cert.key
[root@localhost secrets]# chmod 644 current_web_cert.crt
[root@localhost secrets]# chmod 600 current_web_cert.key

[root@localhost secrets]# restorecon current_web_cert.crt current_web_cert.key

Uložení root certifikátu do úložiště důvěryhodných certifikátů

Některé služby IAM appliance využívají ke komunikaci mezi sebou HTTPS komunikaci skrze službu iam-web-proxy. V případě výměny certifikátu na webové proxy může dojít k přerušení vzájemné komunikace služeb, a tedy k nedostupnosti některých částí IAM appliance pro uživatele.

Pokud jste mezi důvěryhodné certifikáty v cestě /data/volumes-shared/cacerts/ již dříve uložili např. kořenový certifikát CA, a tento certifikát je stále přítomen v řetězu důvěry nově nasazovaného certifikátu, můžete následující kroky přeskočit.

Zkopírujte certificate chain do důvěryhodných certifikátů
[root@localhost secrets]# cp current_web_cert.crt /data/volumes-shared/cacerts/nejake_jeste_neexistujici_jmeno.crt
Editujte soubor a odeberte z něj všechny certifikáty kromě posledního
[root@localhost secrets]# nano /data/volumes-shared/cacerts/nejake_jeste_neexistujici_jmeno.crt

Restart služby iam-web-proxy a návazných služeb

Nakonec restartujte službu webové proxy. V tento okamžik může dojít k částečnému výpadku služeb appliance.

[root@localhost ~]# systemctl restart iam-web-proxy

Pokud jste mezi důvěryhodné certifikáty v cestě /data/volumes-shared/cacerts/ již dříve uložili např. kořenový certifikát CA, a tento certifikát je stále přítomen v řetězu důvěry nově nasazovaného certifikátu, můžete následující kroky přeskočit.

Pokud není funkční autentizace např. do CzechIdM komponenty, je nutné komponentu restartovat. Proveďte restart Java komponent appliance.

Restart služeb CzechIdM a CAS
[root@localhost ~]# systemctl restart iam-czechidm iam-cas

Kontrola

Přístupem přes webový prohlížeč ověříme, že jsou nové certifikáty korektně nasazeny.

V případě potíží můžeme navrátit původní certifikáty ze zálohy (soubory *.orig vytvořené v předchozím kroku). Při navracení ze zálohy je nutné provést i kroky s opravou práv a nakonec restartovat služby.