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
を繰り返します)。
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にアクセスするために必要な証明書のみを取得する方法
ブラウザを開いて https://github.com/ に移動します。 https://
から左側の緑色の名前をクリックして、Certificates
をクリックします。 Details
タブに、次のような証明書チェーンが表示されます。
DigiCert ...
DigiCert ...
github.com ...
各DigiCert証明書をファイルにエクスポートします。
/etc/ssl/certs/
にコピーしますc_rehash
に分類するca-certificates.crt
を実行します言ったように、githubはいつでもCAを変更できるので、私はそのようなアクションの友ではないので、常に追加の作業が発生します。
以前に提案されたように、この問題を回避するために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キーはおそらく「より良い」ソリューションです。 :)