证书验证忽略通用名称而只检查备用名称?

Jan*_*dec 2 ssl nginx kubernetes

我有一个证书,CN=*.some.domain然后有备用名称DNS:*.sub1.some.domainDNS:*.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
Run Code Online (Sandbox Code Playgroud)

该消息明显没有提及通用名称,它只列出了替代名称。

是我误解了 CN 和 Alternates 如何交互,还是 nginx-ingress 控制器中的问题(注意:helm 坚持安装相当旧的容器版本 0.13.0)?

Ste*_*ich 6

从 2000 年开始标准化 HTTPS(基于 TLS 的 HTTP)的RFC 2818已经明确指出:

如果存在 dNSName 类型的 subjectAltName 扩展,则必须将其用作标识。

由于您将 DNS 名称作为主题备用名称,因此 CN 将被忽略。请注意,使用 CN 而不是主题备用名称已被弃用多年,并且某些浏览器(特别是 Chrome)只会查看主题备用名称,如果不存在 SAN,即使 CN 可能与域匹配,也会失败。