仅为Github添加SSL证书(并非ca-certificates软件包中的所有证书)


13

通过HTTPS访问Github时出现以下错误:

error: server certificate verification failed. 
CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

这是因为我在中没有任何证书/etc/ssl/certs/。我知道如何解决这个问题。我可以ca-certificates从Debian仓库安装软件包。但是问题是,这将安装我不一定要接受/信任的所有证书(数千个)。

如何仅为Github安装证书?

子问题/子问题

ca-certificates已经安装了软件包且git可以工作的另一台计算机上,我注意到其中的某些证书/etc/ssl/certs/是每个文件一个证书,而其他证书是一个文件中的多个证书。包含Github证书的特定文件包含/etc/ssl/certs/ca-certificates.crt150多个其他证书:

$ grep 'BEGIN CERTIFICATE' /etc/ssl/certs/ca-certificates.crt | wc -l
159

如何找到这159张证书中的哪一张是我需要的?(除了蛮力外-将文件切成两半,然后检查两半,然后重复while n > 1)。


你想达到什么目的?以编程方式联系GitHub?
Nate W.

您是否尝试过下载源软件包,然后仅提取所需的证书?
jayhendren 2014年

您正在使用什么访问github?一些命令行工具?浏览器?
lk-

Answers:


13

为了访问您的Github,您需要通过ssh进行操作。因此,您需要将ssh公钥添加到github。之后,您可以通过ssh访问github,即:

git init git@github.com:yourname/yourrepo.git

另请参见:Github:生成ssh密钥WikiHow

[编辑#1]

没有证书检查:

GIT_SSL_NO_VERIFY=true git clone https://github.com/p/repo.git

或已验证

GIT_SSL_NO_VERIFY=true git clone https://user@pass:github.com/p/repo.git

对我来说,您仍然不清楚您要什么,因为您知道安装ca证书会解决此问题。

[编辑#2]

好,另一个问题是

如何仅拥有通过https访问github.com所需的证书

  1. 打开浏览器并导航到https://github.com/。点击左侧的绿色名称,https://然后点击 Certificates。在Details选项卡上,您将看到证书链,它是:

    DigiCert ...
      DigiCert ...
       github.com ...
    
  2. 将每个DigiCert证书导出到文件。

  3. 将文件复制到 /etc/ssl/certs/
  4. 运行c_rehash所有证书的猫ca-certificates.crt
  5. 你完成了。

如我所说,我不是此类操作的朋友,因为github可以随时更改CA,因此它总是会导致额外的工作。


1
感谢您的建议。但我想github通过访问https
Martin Vegter 2014年

1

如前所述,您可以使用SSH密钥,而不是依靠HTTPS来避免此问题,并且可以说享受更好的安全性。

话虽如此,我认为您正在寻找的是如何在/ etc / ssl / certs中安装root / CA证书。简而言之,仅将PEM编码的文件转储到/ etc / ssl / certs中是不够的-您还必须计算所述证书的哈希值,并在/ etc / ssl / certs中创建到该证书的符号链接文件。符号链接的名称必须是后缀为.0的哈希,如果存在哈希冲突,则为.1,依此类推。

这是详细的文章以及可用于使过程自动化的示例脚本:http : //wiki.openwrt.org/doc/howto/wget-ssl-certs#adding.root.certificates

希望这就是您想要的,但是就像我之前说的,SSH密钥可能是“更好”的解决方案。:)


c_rehash在做你所解释的。请参见c_rehash手册页。顺便说一句:无需计算哈希。将证书绑定到ca-certificates.crt就足够了,因为git仅读取此文件。此外,该链接说明了如何使用openssl手动获取证书。这是非常令人怀疑的,并且在中间攻击中激怒了一个人。我不推荐。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.