sbt/activator via Proxy

…und unbekannte Features von Javas keytool

Ich muss ge­ra­de in einer Fir­men­um­ge­bung unter Win­dows ein Play-Pro­jekt zum Über­set­zen be­kom­men. Dabei taten sich mit Ac­tiva­tor und Co di­ver­se Hin­der­nis­se auf. Das Sam­meln der ein­zel­nen Lö­sungs­tei­le hat doch ei­ni­ges an Zeit ge­kos­tet, ich hoffe, dass die ge­bün­del­ten Infos hier an­de­ren wei­ter­hel­fen!

Leer­zei­chen im Pfad

Damit hat das Ac­tiva­tor-Batch­fi­le wohl Pro­ble­me. Wie in die­sem Bu­g­re­port be­schrie­ben fehlt da ein Paar An­füh­rungs­zei­chen.

Proxy kon­fi­gu­rie­ren

Ich woll­te die Pro­xy-Kon­fi­gu­ra­ti­on zu­sam­men mit dem Pro­jekt in die Ver­si­ons­kon­trol­le ein­che­cken, um an­de­ren Kol­le­gen (und dem Build­ser­ver) ein ein­fa­ches Über­set­zen zu er­mög­li­chen. Die Datei conf/sbtconfig.txt liegt nun in mei­nem Play-Pro­jekt:

-Dhttp.proxyHost=proxy.firma.de
-DhttpProxyPort=8080
-Dhttps.proxyHost=proxy.firma.de
-DhttpsProxyPort=8080
-Djavax.net.ssl.trustStore=cacerts

Zur letz­ten Zeile komme ich im fol­gen­den Ab­schnitt :-)

Fir­men­ei­ge­ne SSL-Zer­ti­fi­ka­te

Der Proxy hier zeig­te ein lei­der etwas un­hand­li­ches Ver­hal­ten: In den meis­ten Fäl­len er­laub­te er eine di­rek­te Ver­bin­dung (mit den Or­gi­nal­zer­ti­fi­ka­ten), bei man­chen Sei­ten schal­te­te er sich je­doch als Man-in-the-Midd­le mit einem spon­tan ge­ne­rier­ten Zer­ti­fi­kat da­zwi­schen. Diese Zer­ti­fi­ka­te waren glück­li­cher­wei­se alle von der­sel­ben Pro­xy-CA si­gniert. Aber wie an das Zer­ti­fi­kat her­an­kom­men? Er­staun­li­cher­wei­se half hier das Ja­va-key­tool mit dem Be­fehl keytool -J-Dhttps.proxyHost=proxy.firma.de -J-Dhttps.proxyPort=8080 -printcert -rfc -sslserver dl.bintray.com:443.

Das Kom­man­do er­zeugt eine Ver­bin­dung durch den Proxy zum an­ge­ge­be­nen Ser­ver und gibt die Zer­ti­fi­kats­ket­te aus. Das letz­te der an­ge­zeig­ten Zer­ti­fi­kats­blö­cke ist die Pro­xy-CA. Diese muss in den Trust­sto­re des JREs auf­ge­nom­men wer­den; da ich aber nicht die JDK-In­stal­la­ti­on ver­än­dern woll­te, er­zeug­te ich eine Kopie von %JAVA_HOME/jre/lib/security/cacerts in der Wur­zel des Pro­jekt­ver­zeich­nis­ses. Die Infos der Pro­xy-CA in eine Datei proxy.crt ko­pie­ren und in den Trust­sto­re im­por­tie­ren: keytool -importcert -file proxy.crt -alias "Firmenproxy" -keystore cacerts (das Pass­wort lau­tet “chang­eit”)

That’s it! Nun läd Ac­tiva­tor brav sämt­li­che Ab­hän­gig­kei­ten und sbt-Plug­ins her­un­ter, und auch In­tel­liJ IDEA kommt damit klar und er­kennt Li­bra­ries und zu­ge­hö­ri­ge Sour­cen.