読者です 読者をやめる 読者になる 読者になる

bitbucketのレポジトリをファイヤウォール内から HTTPS proxy 経由で Egit + Eclipse でcloneする

Eclipse 4.4 Luna on OS X + Egit で, HTTPS proxy (Squid)経由で bitbucket.org のレポジトリを clone して import しようとすると, Import Projects from Git のLocal Destination の次の Cloning from のところで,

Problem Occurred
Git repository clone failed.
https://user@bitbucket.org/user/repository.git: -1 null

というalert が出て失敗する. org.eclipse.dltk.core.index.sql が, An exception has thrown while indexing document / performing search だそうだ.

Eclipse > Preferences > General > Network Connections の HTTPS proxy はもちろん指定している.

このエラーはこの特別な場合にのみ発生する. すなわち,

  • 同じ状況で, github.com からは clone できる
  • 同じ状況で, Eclipse でなく command line git を(https_proxy 環境変数を設定して)使うと clone できる
  • 同じ状況で, firewall 外で proxy を使わない(Eclipse > Preferences > General > Network Connections で Active Provider=Directとする)なら clone できる

したがって, bitbucket, Egit, Eclipse, proxy (Squid) のいずれか(またはその設定)に, この状況下で顕在化する不具合があると考えられる.

このエラーを回避する1つの方法. ~/.gitconfig

[http]
sslverify=false

または Eclipse > Preferences > Team > Git > Configuration > User Settings で, http.sslverify=>false を Add Entry すればよい.

これは, SSL証明書を検証するな, という大胆な設定. しかし, 上記の不具合は, この検証プロセスにあるのか, 問題なくcloneできるようになる.

http.sslverify=>false という設定は, 様々な不具合の workaround としてWeb上でよく紹介されている. しかし, 大胆な設定であることにかわりはない.

なお, 今の場合, proxy 経由でない場合にはエラーにならないのだから, ローカルにcertificateをインストールしていない, みたいな簡単な話ではない.