GitHub への push/pull/clone が突然「error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version」エラーで使えなくなった件
昨日までは使えていたのに、今日突然使えなくなった。
前提
- Windows7 です
- Git は 1.8.5.2.msysgit を使ってます
- 普段は HTTP で push/pull/clone してます
- その際、認証情報は wincred を使って保存させています
現象
$ cd test $ git pull fatal: unable to access 'https://github.com/stakiran/test/': error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
解決方法
一言で要点: git をバージョンアップした。
元々はこれ。
$ git --version git version 1.8.5.2.msysgit.0
(やったこと1) Git for Windows から最新版をダウンロード&インストール。インストール時のオプション内容は本筋無関係なので割愛(一応末尾にメモした)。
するとこうなった。
$ git --version git version 2.16.2.windows.1
ただしこれだと HTTP 通信の認証時にダイアログが出てうざいので、従来通り wincred を使うようにする。
(やったこと2) C:\program files\Git\mingw32\etc\gitconfig
を開き、以下を変更する
[credential] helper = manager ↓ 以下のように変更 [credential] helper = wincred
これで push/pull/clone 全部通るようになった。
原因は?
OpenSSL のバグっぽい?まあ使ってた Git も古かったし。
参考:
- SSL23_GET_SERVER_HELLO lang:ja - Twitter検索 opensslのバグらしいんだが。
- error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version (#2854) · Issues · TortoiseGit / TortoiseGit · GitLab
(おまけ)インストール時のオプション
- Windows Explorer integraion は要らん
- Use Git and optional Unix tools from the Windows Command Prompt は必須
- Use the OpenSSL Library
- Checkout Windows-style, commit Unix-style line ending.
- Windows 上では CRLF で扱いたいものでして
- Use Windows' default console window
- コンソールは cmd.exe を使いたいものでして
- Extra option(file system caching とか)は全部要らん
- (メモ)インストール時は Credential Manager にチェック入れちゃったけど、たぶんこれチェック外したら上記の wincred に戻す手順要らないかも……
(おまけ2)起動してるコンソールを立ち上げ直すこと
Git をインストールし直した関係で、PATH の通っていた一部ツール(sshとか)が正しく使えなくなっている。
cmd.exe などコンソールは一度立ち上げ直すこと。もちろんプログラムランチャ等から立ち上げている場合は、ランチャ自体を立ち上げ直すことも忘れずに(そうしないと古いままの Git インストール情報が保持されたままでいつまでたっても使えないまま)。