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