Self-signed certifikáty v Chrome

Michal Haták
2 min readMay 15, 2017

--

Pro lokální vývoj používáme HTTPS a Chrome od 58+ (vydáno 19-04-2017) začal vyhazovat problém s certifikátem (NET::ERR_CERT_COMMON_NAME_INVALID)

Problém je, že commonName pro identikaci nestačí a vyžaduje i subjectAltName a vygenerovat certifikát, který toto splňuje, mi chvilku trvalo. Tady návod, pokud by se někomu hodilo, případně jako future reference.

Pozn.: existuje workaround, kdy se povolí fallback na commonName, ale ten prý ve verzi 65 přestane fungovat.

  1. vygenerování privátního klíče (pokud ho ještě nemáte)
$ openssl req -nodes -new -x509 -keyout local.dev.key

2. config (openssl.cnf — je jedno, kde bude uložen)

[ req ]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn
[ dn ]
C = CZ
ST = ...
L = ...
O = ...
OU = ...
emailAddress = ...
CN = ...
[ req_ext ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = localhost
IP.1 = 127.0.0.1

sekci [ dn ] si vyplňte po svém. Důležitá je sekce [ alt_names ] , kde se uvádí domény. U nás používáme jak doménu (localhost-pro backend), tak IP (127.0.0.1-pro frontend). Pokud bychom chtěli mít víc domén, pak je zapisujeme jako DNS.2, DNS.3 atd.

3) vygenerujeme CSR (Certificate Signing Request)

$ openssl req -key local.dev.key -new -out local.dev.csr -config openssl.cnf

4) ověříme CSR

$ openssl req -text -noout -verify -in local.dev.csr

ve výstupu musíme vidět

X509v3 Subject Alternative Name:
DNS:localhost, IP Address:127.0.0.1

5) vygenerujeme certifikát

openssl x509 -req -days 3650 \
-in local.dev.csr \
-signkey local.dev.key \
-out local.dev.crt \
-extensions req_ext \
-extfile openssl.cnf

A hotovo, teď už stačí jen certifikát naimportovat do systému a předhodit webserverům.

Linky:
- https://www.chromestatus.com/feature/4981025180483584
- http://stackoverflow.com/a/42917227/1649965
- https://www.workshopdigital.com/blog/self-signed-certificates-for-website-development/
- https://superuser.com/a/1202506

--

--