最近,我的工作场所更新了互联网使用政策,并实施了 Sophos 安全层来监控流量。
我正在尝试克隆 git 存储库(使用git clone
命令),但出现以下错误
fatal: unable to access 'https://github.com/openssl/openssl.git/': SSL certificate problem: self signed certificate in certificate chain
这是“暗示的”证书问题。我怎样才能让它发挥作用?
更新1: 证书是正确的,因为它们成功地与浏览器(firefox)配合使用,问题是如何使用这些证书来启用 git SSL 验证。
更新2:
复制从 Firefox 获取的证书(导出自Firefox > 首选项 > 隐私和安全 > 证书 > 查看证书)到/etc/ssl/certs
。
以 root 身份执行c_rehash /etc/ssl/certs
并且git config --system http.sslCAPath /etc/ssl/certs
.
产生以下响应。克隆开始并中途终止
Cloning into 'openssl'...
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (8/8), done.
fatal: The remote end hung up unexpectedly.89 MiB | 16.11 MiB/s
fatal: early EOF
fatal: index-pack failed
答案1
看起来 Sophos 安全充当中间人因此您应该禁用此存储库的 SSL/TLS 检查。使用来自 Stackoverflow 的回答:
要禁用单个 git 命令的 TLS/SSL 验证,请尝试使用
-c
正确的配置变量传递给 git,或者使用 Flow 的答案:
git -c http.sslVerify=false clone https://example.com/path/to/git
禁用特定存储库的 SSL 验证 如果存储库完全在您的控制之下,您可以尝试:
git config http.sslVerify false
问题不在于证书,因为该证书(自签名)位于您的计算机上(在 Sophos 安全软件中)。您可以通过停止 Sophos 软件(如果您有权限)并重试(浏览器也是如此)来证明这一点
要安装此证书(如果浏览器接受),请打开浏览器,将其指向 SSL/TLS 站点,单击左侧站点并下载证书(PEM 格式)。然后复制文件/etc/ssl/certs
并执行(最终)c_rehash /etc/ssl/certs
您也可以尝试执行
git config http.sslCAInfo /etc/ssl/certs/<self-signed certificate>.pem
或者
git config --system http.sslCAPath /etc/ssl/certs
让 git 接受这个证书
您也可以手工做一些事情。在目录中搜索config
文件。.git
并在部分添加[http]
这些行:
[http]
sslCAInfo = /etc/ssl/certs/<certificate>.pem
sslCAPath = /etc/ssl/certs/<certificate>.pem
sslCert = /etc/ssl/certs/<certificate>.pem