Gerei o certificado autoassinado com nomes alternativos de assunto para servidor de alias e endereço IP. Eu importei o certificado para as autoridades de certificação confiáveis do Windows. O Chrome aceita o certificado de URL do SAN, mas rejeita o URL indicado no Assunto.
OpenSSL:
openssl req -x509 -newkey rsa:4096 -sha256 -days 999 -nodes \
-keyout nginx.key -out nginx.crt -subj '/CN=www.X.eu' \
-extensions san \
-config <(echo '[req]'; echo 'distinguished_name=req'; echo '[san]'; echo 'subjectAltName=DNS:X.eu,DNS:re1.X.eu,DNS:10.105.1.11')
O certificado:
Subject: CN = www.X.eu
Subject Alternative Name:
DNS Name=sandbox.X.eu
DNS Name=re1.X.eu
DNS Name=10.105.1.11
Este URL falha com "Este site não possui um certificado válido e confiável (net::ERR_CERT_COMMON_NAME_INVALID)."
https://www.X.eu/favicon.ico
O Chrome aceita este URL:
https://re1.X.eu/favicon.ico
Onde está o problema?
Em HTTPS, o campo CN não é mesclado com subjectAltName – em vez disso, ele é completamente ignorado quando a extensão SAN possui algum domínio. Portanto, qualquer domínio que você tenha no CN, você também deve adicionar ao SAN.
Na verdade, você pode até mesmo deixar de fora CN do Assunto completamente, já que todos os clientes TLS suportam SAN.
RFC 2818: HTTP sobre TLS , seção 3.1 "Identidade do servidor":