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-certificatesDebianリポジトリからパッケージをインストールできます。ただし、問題は、これによりすべての証明書(数千)がインストールされるため、必ずしも受け入れたり信頼したりする必要がないことです。

Githubのみの証明書をインストールするにはどうすればよいですか?

サブ問題/サブ質問

パッケージca-certificatesが既にインストールされていてgitが動作している別のマシンでは、一部の証明書/etc/ssl/certs/がファイルごとに1つの証明書であり、その他の証明書が1つのファイル内に複数の証明書があることに気付きました。Github証明書を含む特定のファイルに/etc/ssl/certs/ca-certificates.crtは、150を超える他の証明書が含まれています。

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

これらの159証明書のうち、どれが必要な証明書であるかを見つけるにはどうすればよいですか?(ブルートフォース以外-ファイルを半分にスライスし、両方の半分をチェックし、繰り返しますwhile n > 1)。


何を達成しようとしていますか?プログラムでGitHubに連絡しますか?
ネイトW. 14年

ソースパッケージをダウンロードしてから、必要な証明書のみを抽出しようとしましたか?
jayhendren

GitHubにアクセスするために何を使用していますか?いくつかのコマンドラインツール?ブラウザ?
lk-

回答:


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]

OK、他の質問は

https経由でgithub.comにアクセスするために必要な証明書のみを持つ方法

  1. ブラウザを開き、https://github.com/に移動します。左の緑の名前のKlick https://とのklick Certificates。上のDetailsタブで、あなたは、証明書チェーンを、表示されます:

    DigiCert ...
      DigiCert ...
       github.com ...
    
  2. DigiCert証明書のそれぞれをファイルにエクスポートします。

  3. ファイルをコピーします /etc/ssl/certs/
  4. 走る c_rehashどの猫にすべての証明書をca-certificates.crt
  5. 完了です。

私が言ったように、githubはいつでもCAを変更できるため、私はそのようなアクションの友達ではありません。したがって、常に追加の作業が発生します。


1
ご提案ありがとうございます。しかし、私はgithub経由でアクセスしたいと思いますhttps
マーティンヴェグター

1

以前に提案されたように、この問題を回避するためにHTTPSに依存するのではなく、SSHキーを使用することができ、ほぼ間違いなく、より良いセキュリティを享受できます。

そうは言っても、あなたが探しているのはルート/ CA証明書を/ etc / ssl / certsにインストールする方法だと思います。簡単に言えば、PEMでエンコードされたファイルを/ etc / ssl / certsにダンプするだけでは十分ではありません。この証明書のハッシュを計算し、/ etc / ssl / certsにその証明書へのシンボリックリンクを作成する必要がありますファイル。シンボリックリンクの名前は、接尾辞が.0のハッシュである必要があります。ハッシュの衝突がある場合は、0.1などです。

詳細な説明と、プロセスを自動化するために使用できるサンプルスクリプトを次に示します。 。http

これがあなたが探していたものであることを願っていますが、先ほど言ったように、SSHキーはおそらく「より良い」ソリューションです。:)


c_rehashあなたが説明したことをしています。c_rehashmanページを参照してください。ところで:ハッシュを計算する必要はありません。gitこのファイルのみを読み取るため、ca-certificates.crtに証明書を挿入するだけで十分です。さらに、リンクはopensslで証明書を手動で取得する方法を説明しました。これは非常に疑わしく、中間攻撃の男を引き起こします。お勧めしません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.