我有一张证书,CN=*.some.domain
上面有备用名称DNS:*.sub1.some.domain
,DNS:*.sub2.some.domain
(还有另外 2 个类似的)。
我向 kubernetes 中的 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)?
答案1
已经RFC 2818从 2000 年开始标准化 HTTPS (HTTP over TLS) 的明确规定:
如果存在 dNSName 类型的 subjectAltName 扩展,则必须将其用作身份。
由于您已将 DNS 名称作为主题备用名称,因此 CN 将被忽略。请注意,使用 CN 代替主题备用名称的做法已弃用多年,并且某些浏览器(特别是 Chrome)只会查看主题备用名称,如果不存在 SAN,即使 CN 可能与域匹配,也会失败。