Softwaretechnik-Blog

Freitag, März 26, 2010

 

Tomcat-Admin über SSL/https aus Ant-Build (catalina-ant.jar) aufrufen

Ich habe ein SVN-Repository mit SSL abgesichert, so dass nur noch per https://server/svn/repo darauf zugegriffen werden konnte. Dafür habe ich u.a. ein SSL-Zertifikat selbst erzeugt und im Apache installiert. Das war (wie immer) unproblematisch und funktioniert gut.
Die Entwickler und Tester mussten lediglich beim ersten Aufruf der neuen SVN-URL das Zertifikat bestätigen. (Weil es selbst erzeugt war, galt es standardmäßig zunächst nicht als sicher.) Anschließend war die normale Arbeit wieder möglich.
Die Überraschung kam, als der nächtliche Build fehlschlug. Er meldete im [undeploy]-Target:

[undeploy] sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

 Die Meldung ist wenig benutzerfreundlich. Aber offensichtlich bestand ein Problem mit dem Zertifikat. Zu dieser Fehlermeldung findet man bei Google eine ganze Reihe von Möglichkeiten zur Behebung. Sie beziehen sich aber in der Regel auf den Einsatz mit dem Tomcat, nicht auf die Verwendung des catalina-ant.jar.
Was muss man tun, um diesen Fehler innerhalb des ant-Build zu beheben?

1. Prüfen, welche Java Version für den Build verwendet wird: Das klingt, als wäre das doch selbstverständlich. Wenn aber mehrere Java-Versionen auf dem Build-Server installiert sind, man muss genau diejenige finden, die auch tatsächlich verwendet wird.

2. Das Zertifikat bereitlegen, dass benutzt werden soll: Es liegt auf dem Apache-Server (z.B. unter /etc/apache2/ssl.crt/beispiel.crt) und muss ggf. auf den Build-Server kopiert werden.

3. Mit dem KeyTool das Zertifikat in einen vertrauenswürdigen Zertifikatspeicher laden:
> keytool -keystore /pfad/zum/java/jre/lib/security/meine-certs -import -alias mein.server.de -file beispiel.crt -trustcacerts

4. Die Umgebungsvariable ANT_OPTS setzen: Vor dem Aufruf von ant, muss die Umgebungsvariable ANT_OPTS so gesetzt werden, dass der neue Zertifikatsspeicher benutzt wird. Beispielsweise so:


...
export ANT_OPTS="-Djavax.net.ssl.trustStore=/pfad/zum/java/jre/lib/security/meine-certs"
..
ant -f mein-build.xml
...


5. Build starten: Das sollte jetzt funktionieren.

Comments: Kommentar veröffentlichen

<< Home

Archives

This page is powered by Blogger. Isn't yours?

Haftungsausschluss:
Alle Ausführungen und Inhalte auf dieser Website sind gewissenhaft erarbeitet worden. Dennoch kann weder die inhaltliche Richtigkeit, noch die Übereinstimmung mit den tatsächlichen Bedürfnissen des Nutzers der hier dargestellten Ausführungen und Inhalte garantiert werden. Der Nutzer der hier dargestellten Ausführungen und Inhalte verpflichtet sich, sie vor ihrer Verwendung inhaltlich auf Richtigkeit und auf Eignung für den konkreten Einsatzzweck zu prüfen. Es kann keine Gewährleistung für die rechtliche oder technische Wirksamkeit der Ausführungen und Inhalte übernommen werden - insbesondere können hieraus auch keine haftungsrelevanten Ansprüche hergeleitet werden.