Odteď už pouze SAN certifikáty
Tohle je docela zvláštní. Přešel jsem z nedůvěryhodných StartSSL certifikátů zpět k vlastní certifikační autoritě. Vydal jsem certifikát s CN, přidal .KEY a .PEM do příslušného web serveru. Přistupuji k webu pomocí Vivaldi 1.11 - a web server mi hlásí problém s certifikátem. Povoluji výjimku a nahazuji F12, abych se dozvěděl víc.
Security overview mi hlásí "This page is not secure (broken HTTPS)". A pod tím vidím hlášku, že "Subject Alternative Name missing". Začínám hledat na webu - a našel jsem toto a toto.
Chrome od verze 58, podobně jako Firefox od verze 48 prostě vyžadují povinně SAN. Výborné vysvětlení, včetně důvodů, proč k tomu dochází, jsem našel zde.
"Google Chrome version 58, released in April 2017, removed support for the X.509 certificate Subject Common Name (CN) as a source of naming information when validating certificates. As a result, certificates that do not carry all relevant domain names in the Subject Alternative Name (SAN) extension result in validation failures."
Co to znamená? V případě používání vlastní CA a Windows je třeba ve Windows průvodci vždy vyplňovat pole DNS. Jakýs takýs návod s obrazovkami je třeba zde.
Pokud bych potřeboval použít OpenSSL pro vytvoření certifikačního požadavku (pro podepsání externí autoritou), jsem našel dobrý návod zde.
Nejdříve si vytvořím textový soubor csr_details.txt s příslušným obsahem, v němž je třeba upravit položky C, ST, L, O, OU, emailAddress, CN. A pak je třeba zadat SAN hodnoty, minimálně však DNS.1, jehož hodnota bude shodná s CN. Vím, trochu pakárna.
Ukázkový obsah souboru csr_details.txt:
[req]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn
[ dn ]
C=US
ST=New York
L=Rochester
O=End Point
OU=Testing Domain
emailAddress=your-administrative-address@your-awesome-existing-domain.com
CN = www.your-new-domain.com
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = your-new-domain.com
DNS.2 = www.your-new-domain.com
Poté na linuxovém i Windows systému vytvořím CSR a KEY soubory takto:
openssl req -new -sha256 -nodes -out your-new-domain.com.csr -newkey rsa:2048 -keyout your-new-domain.com.key -config cat csr_details.txt
CSR soubor doručím na CA, nechám podepsat, vezmu výsledný PEM soubor, umístím zpět na web server a dokončím konfiguraci.