web-dev-qa-db-ja.com

GithubのみのSSL証明書の追加(ca-certificatesパッケージのすべての証明書ではない)

HTTPS経由でGithubにアクセスすると、次のエラーが発生します。

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

これは、/etc/ssl/certs/に証明書がないためです。この問題を解決する方法を知っています。 Debianリポジトリからca-certificatesパッケージをインストールできます。問題は、しかし、これは私が必ずしも受け入れ/信頼したくないすべての証明書(数千)をインストールすることです。

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を繰り返します)。

13
Martin Vegter

Githubにアクセスするには、sshを使用する必要があります。そのため、SSH公開鍵をgithubに追加する必要があります。その後、ssh経由でgithubにアクセスできます。

git init [email protected]: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を変更できるので、私はそのようなアクションの友ではないので、常に追加の作業が発生します。

13
user55518

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

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

詳細な説明と、プロセスを自動化するために使用できるサンプルスクリプトを次に示します。 http://wiki.openwrt.org/doc/howto/wget-ssl-certs#adding.root.certificates =

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