そのため、学校では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 hackだけでなく、すべての答えを知りたい
TL; DR
ブラウザだけでなくすべてが機能するためには、そのCA証明書をシステムの信頼できるCAリポジトリに追加する必要があります。
Ubuntuの場合:
理由
何が起こっているのかを説明しましょう。他のポスターは、Github over HTTPSを使用するのに証明書が必要ない理由を説明しています。
そこで起こっているのは、おそらくあなたの学校がそれらを監視するために、すべてのSSL通信を傍受しているということです。
それを行うために、彼らが行うことは本質的に「中間者」攻撃であり、そのため、ブラウザーはgithubの証明書を検証できないと不平を言っています。学校のプロキシがgithubの証明書を取得し、代わりに独自の証明書を提供しています。
ブラウザが、githubの証明書に署名したCAに対して学校から提供された証明書を検証しようとすると、当然失敗します。
そのため、学校でSSL接続が機能するには、その「MITM」攻撃を意識的に受け入れる必要があります。そして、あなたは学校のCA証明書を信頼できる証明書として追加することでそれを行います。
その学校のCAを信頼すると、偽のgithub証明書の検証が機能します。偽のgithub証明書は学校のCAによって検証されるためです。
学校の管理者はすべての暗号化された接続を傍受できるため、SSL接続はもはや安全ではないことに注意してください。
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-certificates
を実行できます。出力に証明書が追加されたことがわかります。
拡張子.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
以前の回答の次の編集を使用します。
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
は両方とも同じホスト名です。
すべてのソリューションを読んで、このように解決しました。
Sudo openssl x509 -inform DER -in certificate.cer -out certificate.crt
Sudo mv certificate.crt /usr/share/ca-certificate/
cd /usr/share/ca-certificate
Sudo chmod 644 certificate.crt
Sudo dpkg-reconfigure ca-certificates
Sudo update-ca-certificates
Firefoxとgoogle chromeに証明書をインストールしても同様の問題が発生していましたが、ターミナルSudo apt-get update
での更新が機能せず、403 Forbidden IPエラーが発生しました。私もsample.cerファイルを持っていました。したがって、基本的には最初に.crtに変換する必要があります。
Sudo openssl x509 -inform DER -in sample.cer -out sample.crt
それでもSudo dpkg-reconfigure ca-certificates
を実行している間、必要な証明書が見つかりませんでした。私の問題は、間違った場所で証明書をコピーしていたことです。
$/usr/share/ca-certificates
にコピーする代わりに、$/usr/local/share/ca-certificates
にコピーしていましたが、適切な場所に配置することで問題を解決しました。ただし、パッケージを更新したり、新しいパッケージをインストールしたりすることはできません。
クイックフィックス(私にとって):
Httpの代わりにftpを使用
Sudo sed -i s/http/ftp/ /etc/apt/sources.list && apt-get update
上記のコマンドは機能しました。変更を行う前に、sources.listファイルのコピーを作成してください。
何か明確でない、または適切でない場合は、修正してください。