Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
94
Help us understand the problem. What is going on with this article?
@karno

GitHubへのgit clone/pull/push時にSSL証明書まわりでエラーが出るときの本当に正しい対処法

More than 1 year has passed since last update.

SSLまわりのエラーでGitHubに繋がらないときのおはなし

たとえば 以下のようなエラーメッセージでGitHubにhttps接続できなくなったときの対処法です。

$ git clone https://github.com/karno/Cadena
Cloning into 'Cadena'...
fatal: unable to access 'https://github.com/karno/Cadena/': SSL certificate problem: self signed certificate in certificate chain
exit status 128

TL;DR

気軽に $ git config --global http.sslVerify false するな💢

今回のおはなしは要するにこれ→ https://github.com/Microsoft/Git-Credential-Manager-for-Windows/issues/646
KasperskyのWeb保護をオンにしているのであれば今すぐオフにしましょうというお話でした。

やったこと:

  • gitを最新版にアップグレードする
  • opensslを使って $ openssl s_client -connect www.github.com:443 して問題の証明書を見る(今回の場合)

以降、どうやってこれにたどり着いたかの備忘録です。

Step 1. gitから事情聴取

gitが叫んでいる通り、、エラーとしてはSSL certificate problem: self signed certificate in certificate chain 以外の何者でもありませんが、もう少しお話を詳しく聞いてみましょう。
しばらくgitをアップデートしていなかったのを思い出して、まずは最新版をインストールし直し。
以降、Windows 10 x64での git 2.19.1, openssl 1.1.1 でお話を進めます。

GIT_CURL_VERBOSE=1 してからcloneすると、gitの通信周りの詳細なログが得られます。

$ set GIT_CURL_VERBOSE=1
$ git clone https://github.com/karno/Cadena
Cloning into 'Cadena'...
* Couldn't find host github.com in the _netrc file; using defaults
*   Trying 192.30.255.112...
* TCP_NODELAY set
* Connected to github.com (192.30.255.112) port 443 (#0)
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
  CApath: none
* SSL certificate problem: self signed certificate in certificate chain
* Closing connection 0
fatal: unable to access 'https://github.com/karno/Cadena/': SSL certificate problem: self signed certificate in certificate chain
exit status 128

だいたいの通信エラーはここで得られる情報が頼りになるかと思いますが、今回はうまいこといきません。

Step 2. OpenSSLから事情聴取

グーグル先生に聞いてみると以下のURLが頼りになりそうです。

これに倣って、opensslで聞いてみます。

$ openssl s_client -connect www.github.com:443
CONNECTED(00000148)
depth=1 O = AO Kaspersky Lab, CN = Kaspersky Anti-Virus Personal Root Certificate
verify error:num=19:self signed certificate in certificate chain
---
Certificate chain
 0 s:businessCategory = Private Organization, jurisdictionC = US, jurisdictionST = Delaware, serialNumber = 5157550, C = US, ST = California, L = San Francisco, O = "GitHub, Inc.", CN = github.com
   i:O = AO Kaspersky Lab, CN = Kaspersky Anti-Virus Personal Root Certificate
 1 s:O = AO Kaspersky Lab, CN = Kaspersky Anti-Virus Personal Root Certificate
   i:O = AO Kaspersky Lab, CN = Kaspersky Anti-Virus Personal Root Certificate
...以下略...

OK、わかりました。そういえばこないだ Kaspersky Internet Security を再インストールしたんでした。

Step 3. GitHubを使えなくしてくれてありがとうKaspersky

Kasperskyはデフォルト機能で✞きれいなMITM✞を仕掛けてくるんですけど、💀きれいなMITM💀だけあって解除法は用意されているので設定しておきましょう。

設定→詳細→ネットワーク から、「暗号化された接続のスキャン」を「暗号化された接続をスキャンしない」に設定、でOKなようです。

image.png

image.png

Final Step. 問題は解決したか?

コンソールを再度立ち上げ直し、様子を見てみます。

$ git clone https://github.com/karno/Cadena
Cloning into 'Cadena'...
remote: Enumerating objects: 1727, done.
remote: Total 1727 (delta 0), reused 0 (delta 0), pack-reused 1727 eceiving objects:  97% (1676/1727), 188.01 K
Receiving objects: 100% (1727/1727), 471.64 KiB | 632.00 KiB/s, done.
Resolving deltas: 100% (1314/1314), done.

大丈夫そうです。

いいですか

世の中の記事では $ git config --global http.sslVerify false しろとか

[http]
   sslVerify = false

しろとか書いていますが、こういったものを簡単にオフにしてはいけません。
あなたも技術者の端くれなら、真因を調べるクセを身に着けましょう。

そしてカスペルスキーは反省するように。

94
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
karno
#ありがとうコンパイルエラー 記事は公開当時の個人の認識または見解に基づくものであり、所属する組織の見解や認識を示すものではありません。また、現在の状況にそぐわない内容・表現である可能性があります。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
94
Help us understand the problem. What is going on with this article?