ideaのproxy設定をしようとしたら、man-in-the-middle attackを受けていたでござる。
やつを追う前に言っておくッ! おれは今やつのスタンドをほんのちょっぴりだが体験した い…いや…体験したというよりはまったく理解を超えていたのだが…… ,. -‐'''''""¨¨¨ヽ (.___,,,... -ァァフ| あ…ありのまま 今 起こった事を話すぜ! |i i| }! }} //| |l、{ j} /,,ィ//| 『おれは奴の前で階段を登っていたと i|:!ヾ、_ノ/ u {:}//ヘ 思ったらいつのまにか降りていた』 |リ u' } ,ノ _,!V,ハ | /´fト、_{ル{,ィ'eラ , タ人 な… 何を言ってるのか わからねーと思うが /' ヾ|宀| {´,)⌒`/ |<ヽトiゝ おれも何をされたのかわからなかった… ,゙ / )ヽ iLレ u' | | ヾlトハ〉 |/_/ ハ !ニ⊇ '/:} V:::::ヽ 頭がどうにかなりそうだった… // 二二二7'T'' /u' __ /:::::::/`ヽ /'´r -―一ァ‐゙T´ '"´ /::::/-‐ \ 催眠術だとか超スピードだとか / // 广¨´ /' /:::::/´ ̄`ヽ ⌒ヽ そんなチャチなもんじゃあ 断じてねえ ノ ' / ノ:::::`ー-、___/:::::// ヽ } _/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::... イ もっと恐ろしいものの片鱗を味わったぜ…
IntelliJ IDEAで社内のproxy経由でgradle使用するとして設定したときに気づいた。
社内はproxyを通してインターネット接続しているので、
まずはproxyの設定
File>Settings でSettings画面を表示。
Appearance & Behavior > System Settings > HTTP proxy
Manual Proxy configurationをこんな感じで設定。(proxy.pacで設定したかったけど、うまくいかず…)
Check connection でhttp://www.google.comへの接続を確認してOK。
gradleをrefreshしようとすると、こんなエラーが発生。
Problem with connection: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
先ほどのproxy setteingの画面でCheck connectionをhttpsで試してみると、同じエラーが。
ググってみるとjavaはオレオレ証明書では接続できないとのこと。
オレオレ証明書なんか使ってないのになぁ~と思いながらも確認してみると…
なんと、httpsの通信を横取りするためのオレオレ証明書が知らぬ間にパソコンに入っている!!
うちの会社の環境はナチュラルにman-in-the-middle状態じゃないか!!!
仮にもシステム会社なのに、なんでこんなことになっているんだ。
ホントしょうもないことをする。
気を取り直して、オレオレ証明書でも接続できるようにする。
ここ(http://code.google.com/p/java-use-examples/source/browse/trunk/src/com/aw/ad/util/InstallCert.java)
にあるInstallCert.javaをコンパイルして実行すれば、OKのはずなのだけれど、
接続がタイムアウトしてできない。
java InstallCert xxx.xxx.xxx.xxx:8080 changeit
気を取り直して、
keytoolでcacertに設定を追加できるようなので、やってみる。
certmgr.mscを起動して、先ほどのオレオレ証明書をエクスポートする。
keytoolにPathを通して、
C:\>keytool -importcert -v -trust cacerts -file \Users\xxxxxxxx\Desktop\oreore.cer -keystore "\Program Files\JetBrains\IntelliJ IDEA Community Edition 14.0.1\jre\jre\lib\security\cacerts" -alias aliasName
aliasは指定しないとmykeyになる。
私の環境ではC:\の下のファイルを変更するには管理者の権限が必要で、
そのままではkeytoolが失敗するので、
デスクトップにcacertをコピーしてkeytoolを実行後、目的の場所にコピペした。
キーストアのデフォルトのパスワードはchangeit
所有者: CN=ABL-CA, DC=ABL, DC=com 発行者: CN=ABL-CA, DC=ABL, DC=com シリアル番号: 2bd7ef9c2afac79b470d0acc131eefc4 有効期間の開始日: Fri Mar 08 11:08:25 JST 2013終了日: Wed Mar 08 11:18:23 JST 20 23 証明書のフィンガプリント: MD5: 63:E5:B1:3C:65:08:7A:2E:92:8F:27:D0:57:68:55:9A SHA1: 5E:B1:AD:3F:E4:E2:1A:AD:11:EC:B5:E7:DB:C6:35:F7:60:18:15:9A SHA256: 0C:DF:0E:00:7F:EF:3D:35:D5:06:C7:9D:50:2E:46:97:70:3F:7D:90:F9: 51:F0:04:C3:27:CF:80:E2:99:D8:10 署名アルゴリズム名: SHA256withRSA バージョン: 3 拡張: #1: ObjectId: 1.3.6.1.4.1.311.20.2 Criticality=false 0000: 1E 04 00 43 00 41 ...C.A #2: ObjectId: 1.3.6.1.4.1.311.21.1 Criticality=false 0000: 02 01 00 ... #3: ObjectId: 2.5.29.19 Criticality=true BasicConstraints:[ CA:true PathLen:2147483647 ] #4: ObjectId: 2.5.29.15 Criticality=false KeyUsage [ DigitalSignature Key_CertSign Crl_Sign ] #5: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 8B EF DE 57 F9 C0 80 B7 45 87 53 13 5D A8 D7 1C ...W....E.S.]... 0010: 99 A0 3F 32 ..?2 ] ] この証明書を信頼しますか。 [いいえ]: y 証明書がキーストアに追加されました [\Users\takumasetoguchi\Desktop\cacertsを格納中]
でもまだ続く。