とある日、いつも通りの作業中
新しいリポジトリをgit cloneしようとしたら…
$ git clone https://github.com/〇〇〇〇/□□□□.git Cloning into '□□□□'... fatal: unable to access 'https://github.com/〇〇〇〇/□□□□.git/': LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
というエラーが発生してgit cloneできず。
wgetを試してみても…
$ wget https://example.com --2019-02-15 12:37:01-- https://example.com/ Resolving example.com (example.com)... 93.184.216.34 Connecting to example.com (example.com)|93.184.216.34|:443... connected. Unable to establish SSL connection.
curlを試してみても…
$ curl -i https://example.com curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to example.com:443
LibreSSLのエラーで動かず…
前にもこのような現象が起き、PC再起動で直るということはわかっているのですが、それでは本来の原因が解決しないのでちょっと解決策を調べて、対処法としてまとめることにしました。
今回はmacOS Mojaveにて発生している例です。
忙しい人向けの結論
Mac再起動してください。
また、3. 解決策 を読んでみてください。
LibreSSL?
LibreSSLはOpenSSLからフォークされたSSL/TLSのライブラリで、OpenBSDプロジェクトによってメンテされています。
macOSではSierra(10.12)まではOpenSSLを採用していたのですが、High Sierra(10.13)より、LibreSSLを使用するようになったようです。
そのためターミナルよりOpenSSLのバージョンを確認してみると…
$ openssl version LibreSSL 2.6.5
といったようにopensslのコマンドで動作するけど、実体としてLibreSSLが使用されていることが確認できます。
エラーの詳細
LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to example.com:443
SSL_ERROR_SYSCALLというエラー、調べてみてもあまり確実な情報がない…
stackoverflowをみると、I/O周りで何かエラーが起きたらしい。
cURLの時のエラーログである
curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to example.com:443
をみると35というエラーコードが帰ってきている。
調べると--http1.1
オプションでダウンロードできるとかのことしか見つからない…
解決策
ごめんなさいタイトルで対処法とか言ってるのに結局いまいちわからないです。
確実な対処としては再起動をすること。
ウィルス対策ソフトとしてカスペルスキーを使ってるのですが、これの可能性もありそうです。(WindowsのWSLでSSL/TLS通信を行おうとするとカスペルスキーのせいで同様のエラーが出るそうです。)
(検証中はカスペルスキーも通信できないことで表示できないのか操作不能なので再起動しました)
まとめ
再起動するか、カスペルスキーをどうにかするんだ!
(カスペルスキーってSo-netのNURO光契約してるとただなんだよなぁ… ぐぬぬ…)
参考文献
macOS 10.13 High Sierra betaではSSLライブラリがOpenSSLがLibreSSLに変更されているもよう。 | APPL Ch.
Windows sybsystem for LinuxのSSL/TLSがKasperskyに拒まれる | Qiita
コメント
コメント一覧 (2件)
macOS Catalina 10.15.2、カスペルスキー 20.0.0.829a.bを使用しており、同様の問題に悩まされていたので助かりました。ありがとうございます。
カスペルスキーを終了させたらPushできました。ファッキンカスペルスキー!!!