Uni*_*ity 125 command-line certificates https
所以在学校我们需要安装一个证书来访问https站点。在 Firefox 中,我可以导入证书。但是,我无法使用命令行执行此操作。例如,运行git push我得到:
fatal: unable to access 'https://github.com/user/repo': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
Run Code Online (Sandbox Code Playgroud)
如何导入证书以删除它?导入必须能够为我进行身份验证。此外,它是一个.cer文件,所以答案.crt将不起作用。另外,我不想要关于如何设置 git 的步骤,因为我已经有了。我想知道是否有可能做到这一点。或者我可以完全禁用该git命令的身份验证并使其忽略证书,就像这里的答案所说的那样?另外,我不想加载网页,我已经设置了 Firefox 来做到这一点。我希望git push命令给出标准输出,如:
[master 630d087] message
1 file changed, 93 insertions(+), 80 deletions(-)
rewrite somefile (84%)
Counting objects: 9, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 978 bytes | 0 bytes/s, done.
Total 5 (delta 2), reused 0 (delta 0)
To https://github.com/User/Repo.git
851ae39..630d087 master -> master
Run Code Online (Sandbox Code Playgroud)
注意:我发现了它的git config --global http.sslverify false. 但我想看到所有问题的答案,而不仅仅是 git hack
Tel*_*her 201
TL; 博士
为了使一切正常,而不仅仅是浏览器,您需要将该 CA 证书添加到系统的受信任 CA 存储库中。
在 ubuntu 中:
为什么
让我也解释一下发生了什么,以便其他海报了解为什么他们不需要任何证书就可以通过 HTTPS 使用 Github。
发生的事情是您的学校正在拦截所有 SSL 通信,可能是为了监视它们。
为此,他们所做的实质上是“中间人”攻击,因此,您的浏览器理所当然地抱怨他无法验证 github 的证书。您的学校代理正在取出 github 的证书,而是提供自己的证书。
当您的浏览器尝试根据签署 github 证书的 CA 验证学校提供的证书时,它理所当然地失败了。
所以,要让SSL连接在学校工作,你需要自觉接受“MITM”攻击。您可以通过将学校的 CA 证书添加为可信证书来实现这一点。
当您信任该学校 CA 时,您对假 github 证书的验证将起作用,因为假 github 证书将由学校 CA 进行验证。
请注意 SSL 连接不再安全,因为您的学校管理员将能够拦截您所有的加密连接。
Rob*_*mer 53
该ca-certificates软件包的说明README.Debian如下:
如果要安装本地证书颁发机构隐式信任,请将证书文件作为单个文件
.crt放入 into/usr/local/share/ca-certificates/并重新运行update-ca-certificates。
请注意,它在这里提到了一个与其他答案不同的目录:
/usr/local/share/ca-certificates/
Run Code Online (Sandbox Code Playgroud)
复制后,/usr/local/share/ca-certificates/您可以更新证书的权限并sudo update-ca-certificates按照 Telegraphers 的回答中所述运行。您将在输出中看到证书已添加。
Mik*_*ike 28
扩展名.crt、.pem 和.cer 是可以互换的,只需更改文件扩展名,它们具有相同的形式。尝试这个:
$ sudo cp mycert.cer /usr/share/ca-certificates/mycert.pem
$ sudo dpkg-reconfigure ca-certificates
$ sudo update-ca-certificates
$ git config --global http.sslCAInfo /usr/share/ca-certificates/mycert.pem
Run Code Online (Sandbox Code Playgroud)
小智 16
我阅读了所有解决方案并像这样解决了;
sudo openssl x509 -inform DER -in certificate.cer -out certificate.crt
sudo mv certificate.crt /usr/share/ca-certificate/
cd /usr/share/ca-certificate
sudo chmod 644 certificate.crt
sudo dpkg-reconfigure ca-certificates
sudo update-ca-certificates
Run Code Online (Sandbox Code Playgroud)
我使用以前的答案的以下汇编:
sudo -i
echo | openssl s_client -showcerts -servername site.example.com -connect example.com:443 2>/dev/null | awk '/-----BEGIN CERTIFICATE-----/, /-----END CERTIFICATE-----/' >> /usr/local/share/ca-certificates/ca-certificates.crt
update-ca-certificates
Run Code Online (Sandbox Code Playgroud)
通常两者site.example.com和example.com是相同的主机名。