成为证书颁发机构并生成证书

成为证书颁发机构并生成证书

一个简单的问题。

我为 PKILabServer.com 签署了一份证书(列在通用名称下),

打开/etc/hosts并添加以下条目127.0.0.1 PKILabServer.com

然后使用命令启动服务器% openssl s_server –cert server.pem -www

我将浏览器指向https://PKILabServer.com:4433然后它显示“安全证书无效...“然后我加载我的证书文件ca.crt,网站就完美加载了。

问题是,由于 PKILabServer.com 指向本地主机,如果我们使用https://本地主机:4433相反,我们将连接到同一个 Web 服务器。

但是当我将浏览器指向时localhost:4433,出现错误,提示“此证书仅对 pkilabserver.com 有效...”我需要在我的项目中解释此问题的原因,这就是我的回答。如果我错了,请纠正我。

这是因为生成的证书签名请求是专门为 PKILabServer.com 签名的(因为它在通用名称下列出),因为 /etc/hosts 文件包含很多在 localhost 下列出的其他网站的条目,因此将浏览器指向localhost:4433/etc/hosts 文件中列出的网站,由于网站不匹配,我们收到错误“该证书仅对 PKILabServer.com 有效”

答案1

我认为您混淆了 HTTPS 连接中 IP 地址和域名的作用。

证书(在 HTTPS 上下文中)不了解 IP 地址,甚至不太关心 - 它所关心的只是与之关联的域名 - 并且这些都被硬编码到证书中。

当您的 HTTPS 连接建立时,域名将使用标头(“host:xxxx”)传递 - 并且证书会根据此进行验证,无论它采用哪种接口。

因此,当您访问 localhost:XXX 时,证书不匹配,因为 localhost 不在标头的 hosts 行中,因此会抛出错误。同样,将 127.0.0.1 映射到域名并使用该域名也可以正常工作。

[我注意到,为了完整起见,我假设虚拟主机可以绑定到具有相同配置的任何 IP]

相关内容