我已经创建了一个 CA 并生成了一个使用该 CA 签名的自签名证书,然后将其与 IIS 服务器上的本地网站绑定,在我的 PC 上工作正常,但是当我在同一 Intranet 上的其他 PC 上访问它时,它会给出一个未知发布者的错误。我想要实现的是,我应该能够在内网上通过 https 访问 IIS 服务器上本地托管的网站。
我已经创建了一个 CA 并生成了一个使用该 CA 签名的自签名证书,然后将其与 IIS 服务器上的本地网站绑定,在我的 PC 上工作正常,但是当我在同一 Intranet 上的其他 PC 上访问它时,它会给出一个未知发布者的错误。我想要实现的是,我应该能够在内网上通过 https 访问 IIS 服务器上本地托管的网站。
首先,确保您没有使用 SHA1 算法从 IIS 生成自签名证书,因为它在现代浏览器中已过时。如果是 SHA1 算法,请使用 SHA256 等更好的算法。
之后,仅使用公钥导出您的证书。将其添加到您想要通过 Intranet 访问本地网站的每台 Windows 计算机上的 Windows 证书存储中。对于 Firefox,您必须将证书添加到 Firefox 自己的证书存储中。
如果您不在每台计算机上添加证书,那么他们将无法信任您的站点。仅当 CA 已存在于其所使用的证书存储中时,您的浏览器才会信任您的站点。
如果您不想在 Intranet 上的每台计算机上手动添加证书,则可以选择受信任的证书提供商。有很多免费提供证书的人。我个人更喜欢让我们加密。要在 IIS 上自动安装和更新证书,可以使用 win-acme。
参考: https: //github.com/win-acme/win-acme
参考:https://stackoverflow.com/questions/46641473/trust-a-self-signed-cert-from-iis
您可以参考上面的链接,因为它与您的问题非常相似。
您必须将 CA 证书部署到所有想要连接的客户端。
证书不会因为它们是由 CA 签名而开始发挥作用,只有设备信任的特定 CA 才能如实颁发证书,才会发生这种情况。(如果不是这种情况,任何人都可以开始为不属于他们的网站颁发自己的证书,这将完全破坏证书的意义!)
因此,您需要在各处手动安装 CA 根证书。对于您自己的智能手机来说,这不是问题 - Android 和 iOS 都允许自定义 CA 安装。(对于iOS,我认为您需要通过电子邮件将.crt文件作为附件发送,然后通过内置的iOS邮件应用程序打开它。)
您仍然获得了优势,因为您只需要部署一个证书(CA 根证书),而不需要为将来可能拥有的各种 HTTPS 服务部署许多不同的证书。只要设备安装了 CA,它们就会自动识别其将来颁发的所有证书。
尽管我不建议您的员工、家人或各种随机访问者需要访问的网站这样做;告诉他们安装您的 CA 将要求您对您给予极大的信任。因此,您应该为您的 Web 应用程序设置一个域名(是的,即使它仅限内部),然后从Let's Encrypt或其他一些公共 CA 获取证书(是的,您可以在 Windows 上执行 ACME)。
(顺便说一句,从该术语的技术含义来看,如果证书是由 CA 颁发的,那么根据定义,它不是“自签名”。)