当前位置: 首页>>技术教程>>正文


如何为命令行安装证书

, , ,

问题描述

因此,在学校,我们需要安装证书才能访问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

如何导入证书以删除此证书?导入必须能够为我进行身份验证。另外,它是一个.cer文件,因此.crt的答案将不起作用。另外,我不想要像我已经有了的有关如何设置git的步骤。我想知道是否可以这样做。还是可以完全禁用git命令的身份验证,并使其忽略诸如the answer这样的证书?另外,我不想加载网页,我已经设置了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

注意:我发现了它的git config --global http.sslverify false。但我想看到所有问题的答案,而不仅仅是git hack

最佳解决方法

长话短说

为了使所有功能(不仅是浏览器)正常工作,您需要将该CA证书添加到系统的受信任CA存储库中。

在ubuntu中:

  • 转到/usr /local /share /ca-certificates /

  • 创建一个新文件夹,即“ sudo mkdir school”

  • 将.crt文件复制到school文件夹中

  • 确保权限是确定的(文件夹为755,文件为644)

  • 运行“ sudo update-ca-certificates”

为什么

让我解释一下发生了什么,因此其他发布者看到了为什么他们不需要任何证书即可通过HTTPS使用Github。

发生的情况是您的学校正在拦截所有SSL通信,可能是为了监视它们。

为此,他们所做的本质上是“中间人”攻击,因此,您的浏览器正确地抱怨说他无法验证github的证书。您的学校代理正在取出github的证书,而是提供自己的证书。

当您的浏览器尝试针对签署了github证书的CA验证学校提供的证书时,它理应会失败。

因此,为了使SSL连接在学校中正常工作,您需要自觉接受”MITM”攻击。您可以通过将学校的CA证书添加为受信任证书来做到这一点。

当您信任该学校CA时,对假github证书的验证将起作用,因为该假github证书将由学校CA验证。

请注意,SSL连接不再安全,因为您的学校管理员将能够拦截您所有的加密连接。

次佳解决方法

ca-certificates软件包的README.Debian中包含说明:

If you want to install local certificate authorities to be implicitly trusted, please put the certificate files as single files ending with .crt into /usr/local/share/ca-certificates/ and re-run update-ca-certificates.

请注意,它在这里提到的目录与其他答案不同:

/usr/local/share/ca-certificates/

复制到/usr/local/share/ca-certificates/之后,您可以更新证书的权限并按照Telegraphers答复中所述运行sudo update-ca-certificates。您将在输出中看到已添加证书。

第三种解决方法

扩展名.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

第四种方法

我使用以下先前答案的汇编:

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

可以将其修改为单线。

通常,site.example.comexample.com都是相同的主机名。

第五种方法

我阅读了所有解决方案,并像这样解决了;

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7302.html,未经允许,请勿转载。