Nexus & SSL

Kurt Klinner

Im Rahmen des Setup der aktuellsten Version des Nexus Repository Manager musste ich mich auch an die SSL Konfiguration machen. Prinzipiell hat man die üblichen zwei Lösungsansätze. Entweder man nutzt einen vorgeschalteten Proxy an dem man SSL terminiert und man konfiguriert die Eclipse Jetty Instanz direkt.

Ich entschied mich für den zweiten Ansatz und wollte brav der Dokumentation unter https://books.sonatype.com/nexus-book/reference3/security.html#ssl-inbound bin aber auf ein "Problem" gestossen. Aber immer der Reihe nach.

Das Erstellen eines Java Keystore "from scratch" war nicht nötig, lediglich das Erzeugen des selbigen aus einem pkcs12 File musste erfolgen

keytool -importkeystore -srckeystore XXXX.keystore -srcstoretype pkcs12 
-destkeystore keystore.jks  -deststoretype jks -deststorepass XXX

Den erzeugen Keystore legt man im nexus/etc/ssl Verzeichnis ab und passt die Konfiguration in der Datei jetty-https.xml, die ebenfalls im etc Directory liegt dahin gehend an, dass der Keystore angezogen wird.

...
<New id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory">
    <Set name="KeyStorePath"><Property name="karaf.etc"/>/ssl/keystore.jks</Set>
    <Set name="KeyStorePassword">XXXX</Set>
    <Set name="KeyManagerPassword">XXXX</Set>
    <Set name="TrustStorePath"><Property name="karaf.etc"/>/ssl/keystore.jks</Set>
    <Set name="TrustStorePassword">XXX</Set>
   ...

Des weiteren muss die org.sonatype.nexus.cfg und nicht wie auf der vorher genannten Page die nexus.properties (zumindest findet sich in meinem Setup die nexus.properties ar nicht) angepasst werden.

Zum einen muss der ssl Port angegeben werden, zum anderen muss die jetty-https.xml bei dem Parameter nexus-args hinzugefügt werden

# Jetty section
application-port=8081
application-port-ssl:8443
application-host=0.0.0.0
nexus-args=${karaf.etc}/jetty.xml,${karaf.etc}/jetty-http.xml,${karaf.etc}/jetty-requestlog.xml,${karaf.etc}/jetty-https.xml
nexus-context-path=/
 
# Nexus section
nexus-edition=nexus-oss-edition
nexus-features=\
nexus-oss-feature

Den Service neu starten und noch die Base URL der Applikation auf die https basierte Variante umstellen.