如何为命令行安装证书
所以在学校我们需要安装证书才能访问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
如何导入证书以删除它? 导入必须能够为我进行身份validation。 此外,它是.cer
文件,因此.crt
的答案将不起作用。 此外,我不想像我已经拥有的那样设置如何设置git的步骤。 我想知道是否可以这样做。 或者我可以完全使用git
命令禁用身份validation,并使其忽略证书,如此处的答案所示 ? 另外,我不想加载网页,我已经设置了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
TL; DR
要使一切工作而不仅仅是您的浏览器,您需要将该CA证书添加到系统的可信CA存储库中。
在ubuntu中:
- 转到/ usr / local / share / ca-certificates /
- 创建一个新文件夹,即“sudo mkdir school”
- 将.crt文件复制到学校文件夹中
- 确保权限正常(文件夹为755,文件为644)
- 运行“sudo update-ca-certificates”
为什么
让我解释一下发生了什么,所以其他海报看到为什么他们不需要任何证书来通过HTTPS使用Github。
发生了什么事情,你的学校正在拦截所有的SSL通信,可能是为了监控它们。
要做到这一点,他们所做的实质上是一个“中间人”攻击,正因为如此,你的浏览器正确地抱怨他无法validationgithub的证书。 您的学校代理人正在取得github的证书,而是提供自己的证书。
当您的浏览器尝试validation学校为签署github证书的CA提供的证书时,它理所当然地失败了。
因此,要使SSL连接在学校中工作,您需要有意识地接受“MITM”攻击。 您可以通过将学校的CA证书添加为可信任的证书来实现。
当您信任该学校CA时,您对伪github证书的validation将起作用,因为假github证书将由学校CAvalidation。
请注意,SSL连接不再安全,因为您的学校管理员将能够拦截您的所有加密连接。
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答案中所述。 您将在输出中看到已添加证书。
扩展名.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.com
和example.com
都是相同的主机名。
我有一个类似的问题,在firefox和谷歌浏览器安装证书工作但在终端sudo apt-get update
不起作用,并给出403 Forbidden IP错误。 我也有一个sample.cer文件。 所以基本上我必须先将其转换为.crt。
sudo openssl x509 -inform DER -in sample.cer -out sample.crt
在做sudo dpkg-reconfigure ca-certificates
我找不到所需的证书。 我的问题是我在错误的地方复制证书。
我没有在$/usr/share/ca-certificates
上复制它,而是将它复制到$/usr/local/share/ca-certificates
但是把它放在正确的位置解决了我的问题。 但我仍然无法更新软件包或安装新软件包。
快速修复(对我来说):
使用ftp而不是http
sudo sed -is/http/ftp/ /etc/apt/sources.list && apt-get update
以上命令工作。 在进行更改之前,请复制sources.list文件。
如果有什么不清楚或不正确请请纠正我。
要使用https
访问网站,无论您使用的是CLI还是GUI浏览器,都不需要您的学校证书。
要通过http(s)使用git
,您需要在GitHub上的配置文件设置中注册您的公钥。
这里有更多的信息。 在此处更改您的GitHub个人资料。
试试这个:
sudo apt-get install w3m w3m https://github.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