2016/6/7 追記 : Maven Centralだけではなく、ヘルスチェック用にSonatypeの証明書も追加する必要があるので、追加した。
Nexus 2.xでのお話。3.xになっても同じかは試していない。
Proxyによって、信頼するSSL証明書が書き換えられる?らしく、Maven Centralからデータが取れなくなる。
WindowsにNexusが入っていて、他のドメインで認証するProxyを使っている場合しか起きないレアケース。
以下、こんな状況だと仮定する。
- ドメイン : HOGE-DOMAIN
- ユーザ : hoge-user
- パスワード : hogehoge
- Proxyホスト : 192.168.99.99
- Proxyポート : 8080
Maven Centralの証明書を登録
証明書を取得する
JRE付属のkeytoolを使って証明書を取得する
> keytool -J-Dhttps.proxyHost=192.168.99.99 -J-Dhttps.proxyPort=8080 -J-Dhttps.proxyUser=HOGE-DOMAIN/hoge-user -J-Dhttps.proxyPassword=hogehoge -printcert -rfc -sslserver repo1.maven.org:443
を発行すると、
-----BEGIN CERTIFICATE-----
略
-----END CERTIFICATE-----
が取得できるので、これをcentral.pemのような名前で保存する。
信頼する証明書として追加する
同じく、keytoolを使って、始めから入っている証明書リスト?に追加する。
> keytool -importcert -keystore %JAVA_HOME%\lib\security\cacerts -file central.pem -new repo1.maven.org
パスワードの入力を求められるので、 changeit を入力し、信頼するか?の質問に はい と答える。
Sonatypeのヘルスチェック用の証明書を登録
証明書を取得する
> keytool -J-Dhttps.proxyHost=192.168.99.99 -J-Dhttps.proxyPort=8080 -J-Dhttps.proxyUser=HOGE-DOMAIN/hoge-user -J-Dhttps.proxyPassword=hogehoge -printcert -rfc -sslserver rhc.sonatype.com:443
を発行すると、
-----BEGIN CERTIFICATE-----
略
-----END CERTIFICATE-----
が取得できるので、これをsonatype.pemのような名前で保存する。
信頼する証明書として追加する
同じく、keytoolを使って、始めから入っている証明書リスト?に追加する。
> keytool -importcert -keystore %JAVA_HOME%\lib\security\cacerts -file sonatype.pem -alias rhc.sonatype.com
パスワードの入力を求められるので、 changeit を入力し、信頼するか?の質問に はい と答える。
NexusにProxy設定
- 証明書が追加できたら、Nexusを起動する
- 管理者でログイン
- 左メニューの Administration -> Serverを選択
-
Default HTTP Proxy Settingsをチェックして、以下のように入力
- Proxy Host : 192.168.99.99
- Proxy Port : 8080
- Authentication : チェック
- Username : hoge-user
- Password : hogehoge
- NT LAN Manager Domain : HOGE-DOMAIN
参考
- Fix https repository blocking by PKIX path building failed - Sonatype Support
- How to trust the SSL certificate issued by the HTTP proxy server in Nexus - Sonatype Support
- Nexus Repository Remote Health Check Analysis fails with SSL errors - Sonatype Support
- SSL Certificate Guide - Sonatype Support
- 24.1. Managing Outbound SSL Certificates