如何从 PEM 文件获取证书通用名称

如何从 PEM 文件获取证书通用名称

网上的各种文章让我相信,服务器证书的通用名称必须与其有效的根 URL 完全匹配。但是,当我通过命令查看 /etc/ssl/certs 中的一堆文件时,openssl x509 -inform PEM -in <certfile.pem> -text我发现 CN 值通常是网站的可读描述(例如“Google Internet Authority”),而不是域名。事实上,我在任何文件中都看不到任何看起来像域名或 IP 地址的东西,无论是在文件中还是在 的输出中openssl s_client -connect <ip>

那么,我对“通用名称”的理解是否不正确?如何从证书中检索证书有效的 URL?

答案1

是也不是。对于服务器证书,您说的没错(除了一些额外的细节)。但是 /etc/ssl/certs 中的证书是中间 CA 证书和根 CA 证书,而不是服务器证书。也就是说,它们不直接用于服务器识别。因此,它们不存在匹配问题。

服务器证书(即服务器实际向客户端提供的证书)确实存在匹配问题,并且是您在连接时获得的第一个证书中看到的。如果您查看 openssl 构建的链中的其他证书(并向您显示),您将看到对 /etc/ssl/certs 样式证书的引用。

如果定义为合法的替代字段之一匹配,则 CN 本身可能不匹配。为证书匹配添加其他有效名称的方法之一是使用具有 dNSName 类型的 subjectAltName 扩展,然后指定要匹配的有效名称是什么(至少对于 HTTPS 目的而言)。还有其他方法可用于其他目的。

相关内容