如何拦截企业环境中所需的SSL授权证书?

如何拦截企业环境中所需的SSL授权证书?

我的情况如下:在我们的公司网络中,使用公司自己颁发的一种特殊 SSL 证书。每次我在 Firefox 中通过 https 打开网站时,都会显示一个警告监视器,显示“sec_error_unknown_issuer”。证书详细信息中显示此特定证书由我的公司颁发,有公司地址和名称等。这非常烦人,因为每次访问 SSL 加密网站时,我都需要为无效证书添加例外。一种可能的解决方案是放弃 SSL 并在可能的情况下使用纯 http(我猜如果网络管理员自己处理证书,SSL 和无 SSL 之间没有区别),但有些网站没有 SSL 就无法运行,例如银行登录页面。所以我认为更好的想法是将证书添加到 Firefox 受信任的颁发机构列表中。为此,我需要有一个颁发机构证书。我尝试使用以下 Openssl 命令获取它,但无济于事:

openssl s_client -connect 主机名:端口

它显示一个证书,但随后就停止了,因为无法验证某些证书,而且证书不正确,因为当我尝试导入证书时,Firefox 显示错误。我现在不记得确切的消息了,但它是“此证书不是有效的授权证书”之类的。

我也尝试过使用Wireshark,但效果不太好,没能抓取到我想要的信息。最后的办法是,在Firefox中禁用SSL证书验证是不可能的。

那么,我怎样才能获取此本地颁发机构证书,并将其导入 Firefox,并不再被错误消息所困扰?

答案1

如果您使用的是公司网络或信任颁发者,则必须将给定的证书导入钥匙串并使其对您的 SSL 连接可信。要使其适用于所有网址,它必须是根证书颁发机构。

在 Chrome 中,您基本上可以单击挂锁图标,然后单击“连接”选项卡,这样您就可以看到证书信息,该信息应包含根(顶部)证书中的 CRT 链接。

GitHub - 该网站的身份尚未验证。服务器的证书不受信任。

下载证书文件后或通过以下命令:

openssl s_client -connect example.com:443 < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > foo.crt

打开该文件并在受信任的设置中将其设置为信任。

在 OS X 上,您可以双击文件或将其拖放到 Keychain Access 中,这样它就会出现在登录/证书。然后双击导入的证书并将其设置为始终信任 SSL(如下所示)。

钥匙串访问、登录/证书 - 始终信任

现在所有 HTTPS/SSL 网站都应该正常运行。

答案2

添加-showcerts选项以使 s_client 打印整个链。

答案3

我今天遇到了同样的问题,每次我尝试连接一个网站时,所有 mozilla 产品都会要求添加证书的权限。而且该证书仅适用于指定的网站。

为了将您的公司证书添加到受信任的颁发机构,请转到控制面板 -> Internet 选项 -> 内容 -> 证书 -> 受信任的根证书颁发机构

然后会出现一个列表。找到您的公司证书,然后使用向导的默认选项将其导出到文件。

之后打开 Firefox,选项 -> 高级 -> 查看证书 -> 权限 -> 导入

选择您已导出的文件,并检查所有信任选项。

现在您将能够连接所有网站。

答案4

如果您无法获取公司 Web 代理的证书,请在浏览器和公司代理之间添加您自己的本地代理(例如 Burp Suite 代理),并在浏览器中安装本地代理的证书。配置浏览器以使用本地代理(选项 -> 高级 -> 网络 -> 连接设置)。然后,浏览器只会看到由受信任的本地代理颁发的证书,并且您在浏览器中不会看到任何错误。

相关内容