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 も古かったし。

参考:

(おまけ)インストール時のオプション

  • Windows Explorer integraion は要らん
  • Use Git and optional Unix tools from the Windows Command Prompt は必須
    • これしないと ssh コマンドなど unix 系コマンドが入らん
  • 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 インストール情報が保持されたままでいつまでたっても使えないまま)。