コマンドライン用の証明書をインストールする方法

コマンドライン用の証明書をインストールする方法

学校では、https サイトにアクセスするために証明書をインストールする必要があります。Firefox では証明書をインポートできます。ただし、コマンド ラインではインポートできません。たとえば、実行すると次のようgit pushになります。

fatal: unable to access 'https://github.com/user/repo': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

これを削除するには、証明書をインポートするにはどうすればよいですか? インポートは認証できる必要があります。また、これはファイルなので.cer、の回答は.crt機能しません。また、すでに持っているため、git の設定方法に関する手順は必要ありません。それが可能かどうかを知りたいです。または、コマンドで認証をgit完全に無効にして、次のように証明書を無視するようにできますか?答えここには何と書いてありますか? また、Web ページをロードしたくないので、Firefox でロードするように設定しました。コマンドでgit push次のような標準出力が得られるようにしたいです:

[master 630d087] message
 1 file changed, 93 insertions(+), 80 deletions(-)
 rewrite somefile (84%)
Counting objects: 9, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 978 bytes | 0 bytes/s, done.
Total 5 (delta 2), reused 0 (delta 0)
To https://github.com/User/Repo.git
   851ae39..630d087  master -> master

注: 私はそれを見つけましたgit config --global http.sslverify false。しかし、gitハックだけでなく、すべてに対する答えを見たいです

答え1

要約

ブラウザだけでなくすべてが機能するには、その CA 証明書をシステムの信頼できる CA リポジトリに追加する必要があります。

Ubuntuの場合:

  • /usr/local/share/ca-certificates/に移動します。
  • 新しいフォルダを作成します。例: "sudo mkdir school"
  • .crtファイルを学校のフォルダにコピーします
  • 権限が適切であることを確認します(フォルダの場合は 755、ファイルの場合は 644)
  • 「sudo update-ca-certificates」を実行します。

なぜ

何が起こっているのかについても説明しましょう。そうすれば、他の投稿者も、HTTPS 経由で Github を使用するのに証明書が必要ない理由がわかります。

そこで何が起こっているかというと、おそらくあなたの学校がすべての SSL 通信を傍受して、監視しているということです。

そのために彼らが行っていることは本質的に「中間者」攻撃であり、そのため、ブラウザは当然ながら github の証明書を検証できないと文句を言います。学校のプロキシは github の証明書を取り出して、代わりに独自の証明書を提供しています。

ブラウザが、学校が提供した証明書を github の証明書に署名した CA に対して検証しようとすると、当然ながら失敗します。

したがって、学校で SSL 接続が機能するには、意識的に「MITM」攻撃を受け入れる必要があります。そのためには、学校の CA 証明書を信頼できる証明書として追加します。

その学校の CA を信頼すると、偽の github 証明書は学校の CA によって検証されるため、偽の github 証明書の検証が機能します。

学校の管理者がすべての暗号化された接続を傍受できるようになるため、SSL 接続は安全ではなくなることに注意してください。

答え2

パッケージca-certificatesには以下の説明書が入っていますREADME.Debian:

暗黙的に信頼されるローカル証明機関をインストールする場合は、証明書ファイルを で終わる単一のファイルとして に入れて.crt/usr/local/share/ca-certificates/を再実行してください update-ca-certificates

ここでは他の回答とは異なるディレクトリについて言及していることに注意してください。

/usr/local/share/ca-certificates/

コピーした後、/usr/local/share/ca-certificates/証明書の権限を更新し、sudo update-ca-certificatesTelegraphers の回答に記載されているように実行できます。出力に証明書が追加されたことがわかります。

答え3

拡張子 .crt、.pem、.cer は互換性があり、ファイル名拡張子を変更するだけで、形式は同じです。次を試してください。

$ sudo cp mycert.cer /usr/share/ca-certificates/mycert.pem
$ sudo dpkg-reconfigure ca-certificates
$ sudo update-ca-certificates
$ git config --global http.sslCAInfo /usr/share/ca-certificates/mycert.pem

答え4

私は以下の過去の回答をまとめたものを使用します。

sudo -i
echo | openssl s_client -showcerts -servername site.example.com -connect example.com:443 2>/dev/null | awk '/-----BEGIN CERTIFICATE-----/, /-----END CERTIFICATE-----/' >> /usr/local/share/ca-certificates/ca-certificates.crt 
update-ca-certificates

site.example.com多くの場合、 と は両方ともexample.com同じホスト名です。

関連情報