![系统范围内接受自签名证书,无需安装为根 CA](https://linux22.com/image/1604815/%E7%B3%BB%E7%BB%9F%E8%8C%83%E5%9B%B4%E5%86%85%E6%8E%A5%E5%8F%97%E8%87%AA%E7%AD%BE%E5%90%8D%E8%AF%81%E4%B9%A6%EF%BC%8C%E6%97%A0%E9%9C%80%E5%AE%89%E8%A3%85%E4%B8%BA%E6%A0%B9%20CA.png)
对于内部网服务器,我使用自签名证书,我希望在整个系统范围内信任该证书。我在 Firefox 中添加了证书例外,但在 Chrome、控制台应用程序、IDE 等中无法实现...
这就是为什么我希望证书在整个系统范围内受到信任。据我了解,建议的方法是将其安装为根 CA:https://blogs.technet.microsoft.com/sbs/2008/05/08/installing-a-self-signed-certificate-as-a-trusted-root-ca-in-windows-vista/
据我了解,这意味着,谁控制了自签名证书,谁就控制了根证书颁发机构,该颁发机构可以为任何在我的计算机上安装网站。这是真的吗?如果是,我该如何防止这种情况发生?我只想让一台内部网服务器自签名,而不是我使用的所有服务。
这里推荐的处理内联网 TLS 的方法是什么?
答案1
如果服务器在您的控制之下:
- 创建一个实际的根 CA(例如使用 easy-rsa 或 Xca 或 Windows Server CA 角色)。
- 将自签名服务器证书替换为自定义 CA 颁发的证书。
- 确保您刚刚颁发的证书确实被标记为“叶”/“终端实体”证书。查找“X.509v3 基本约束”扩展 - 它必须存在并且显示“CA: FALSE”。
- 将自定义 CA 的根证书安装到您的计算机中。
- 安全存储 CA 私钥,以便只有在需要颁发新证书时才可以访问它。
由于服务器的证书包含“基本约束:CA:FALSE”,因此它将无法仅使用自己的密钥颁发新证书。
(需要将 CA 分开的原因是,直接将服务器的自签名证书安装到“受信任的 CA”文件夹中可能会导致系统忽略基本约束 - 毕竟,它是作为颁发机构安装的。分离可以避免这个问题,因为您可以保护根 CA 密钥。)
作为一项附加功能,当服务器证书过期或名称更改时,您无需重新信任该证书 - 只需使用相同的根 CA 来颁发新证书。