如何安装命令行证书

如何安装命令行证书

因此,在学校,我们需要安装证书才能访问 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完全禁用身份验证并使其忽略证书,就像答案这里说了什么?另外,我不想加载网页,我已将 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

答案1

总结

为了使一切正常运行(不仅仅是您的浏览器),您需要将该 CA 证书添加到系统的受信任的 CA 存储库中。

在 Ubuntu 中:

  • 转到 /usr/local/share/ca-certificates/
  • 创建一个新文件夹,即“sudo mkdir school”
  • 将 .crt 文件复制到学校文件夹中
  • 确保权限正常(文件夹为 755,文件为 644)
  • 运行“sudo update-ca-certificates”

为什么

让我解释一下发生了什么,这样其他发帖人就会明白为什么他们不需要任何证书就可以通过 HTTPS 使用 Github。

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

为了实现这一点,他们所做的本质上是一种“中间人”攻击,因此,您的浏览器会理所当然地抱怨它无法验证 github 的证书。您的学校代理正在删除 github 的证书,而是提供自己的证书。

当您的浏览器尝试根据签署 github 证书的 CA 来验证学校提供的证书时,它理所当然地会失败。

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

当你信任学校 CA 时,你对假 github 证书的验证将会有效,因为假 github 证书将由学校 CA 进行验证。

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

答案2

包装ca-certificates内含有以下说明README.Debian

如果您要安装隐式信任的本地证书颁发机构,请将证书文件作为以 结尾的单个文件.crt放入/usr/local/share/ca-certificates/并重新运行 update-ca-certificates

请注意,它提到的目录与此处的其他答案不同:

/usr/local/share/ca-certificates/

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

答案3

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

答案4

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

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是相同的主机名。

相关内容