У меня есть сертификат CN=*.some.domain
а затем альтернативные имена DNS:*.sub1.some.domain
, DNS:*.sub2.some.domain
(Еще 2 таких).
Я предоставил сертификат nginx-ingress в кубернетах, который обслуживает host.some.domain
. И это дает мне ошибку:
controller.go:1041] unexpected error validating SSL certificate default/tls-cert for host dwarf30.epiqa.certicon.cz. Reason: x509: certificate is valid for *.sub1.some.domain, *.sub2.some.domain, not host.some.domain
Примечательно, что в сообщении не упоминается общее имя, в нем перечислены только альтернативы.
Я неправильно понимаю, как взаимодействуют CN и Alternates, или это проблема в контроллере nginx-ingress (примечание: helm настаивает на установке довольно старой версии контейнера 0.13.0)?
Уже RFC 2818 который стандартизирует HTTPS (HTTP через TLS) с 2000 года, четко говорит:
Если присутствует расширение subjectAltName типа dNSName, оно ДОЛЖНО использоваться в качестве идентификатора.
Поскольку у вас есть DNS-имена в качестве альтернативных имен субъектов, CN будет игнорироваться. Обратите внимание, что использование CN вместо альтернативных имен субъектов не рекомендуется в течение многих лет, и некоторые браузеры (в частности, Chrome) будут смотреть только на альтернативные имена субъектов и отказывать, если SAN не существует, даже если CN может соответствовать домену.