仅为 Github 添加 SSL 证书(并非来自 ca-certificates 包的所有证书)

Mar*_*ter 13 git ssl github certificates

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

error: server certificate verification failed. 
CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
Run Code Online (Sandbox Code Playgroud)

这是因为我在/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
Run Code Online (Sandbox Code Playgroud)

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

小智 13

为了访问你的 Github,你需要通过 ssh 来完成。所以你需要将你的 ssh 公钥添加到 github。之后,您就可以通过 ssh 访问 github,即:

git init git@github.com:yourname/yourrepo.git
Run Code Online (Sandbox Code Playgroud)

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

[编辑#1]

没有证书检查:

GIT_SSL_NO_VERIFY=true git clone https://github.com/p/repo.git
Run Code Online (Sandbox Code Playgroud)

或认证

GIT_SSL_NO_VERIFY=true git clone https://user@pass:github.com/p/repo.git
Run Code Online (Sandbox Code Playgroud)

对我来说仍然不清楚你在要求什么,因为你知道安装 ca-certificates 可以解决这个问题。

[编辑#2]

好的,另一个问题是

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

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

    DigiCert ...
      DigiCert ...
       github.com ...
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将每个 DigiCert 证书导出到一个文件。

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

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