Step-by-step guide
Um die Webservice-Schnittstelle von jadice server über TLS abzusichern müssen drei Dinge angepasst werden.
Der embedded jetty-Server, den jadice server mitbringt, muss so konfiguriert werden, dass dieser die für die Verschlüsselung benötigten Keystores kennt. Dazu erstellen Sie unter
server-config/application
die Dateijetty-tls.xml
mit diesem Inhalt:jetty-tls.xml<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:http="http://cxf.apache.org/transports/http/configuration" xmlns:httpj="http://cxf.apache.org/transports/http-jetty/configuration" xmlns:sec="http://cxf.apache.org/configuration/security" xmlns:cxf="http://cxf.apache.org/core" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://cxf.apache.org/configuration/security http://cxf.apache.org/schemas/configuration/security.xsd http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd http://cxf.apache.org/transports/http-jetty/configuration http://cxf.apache.org/schemas/configuration/http-jetty.xsd http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd"> <cxf:bus /> <httpj:engine-factory bus="cxf"> <httpj:engine port="9001"> <httpj:tlsServerParameters> <sec:keyManagers keyPassword="password"> <sec:keyStore file="keystore.jks" password="password" type="JKS" /> </sec:keyManagers> <sec:trustManagers> <sec:keyStore file="keystore.jks" password="password" type="JKS" /> </sec:trustManagers> <sec:cipherSuitesFilter> <!-- these filters ensure that a ciphersuite with export-suitable or null encryption is used, but exclude anonymous Diffie-Hellman key change as this is vulnerable to man-in-the-middle attacks --> <sec:include>.*_EXPORT_.*</sec:include> <sec:include>.*_EXPORT1024_.*</sec:include> <sec:include>.*_WITH_DES_.*</sec:include> <sec:include>.*_WITH_AES_.*</sec:include> <sec:include>.*_WITH_NULL_.*</sec:include> <sec:exclude>.*_DH_anon_.*</sec:exclude> </sec:cipherSuitesFilter> <sec:clientAuthentication want="true" required="false" /> </httpj:tlsServerParameters> <httpj:handlers> <bean class="org.eclipse.jetty.server.handler.DefaultHandler" /> </httpj:handlers> </httpj:engine> </httpj:engine-factory> </beans>
Um die oben erzeugte Konfigurationsdatei in jadice server einzubinden muss in der Datei
server-config/application/webservices.xml
folgende Zeile ergänzt werden:Ergänzung in webservices.xml<import resource="jetty-tls.xml"/>
Die Addresse und der Port entsprechend der Werte im jetty-tls.xml anpassen
Anpassung in webservices.xml<jaxws:endpoint id="jobServiceEndpoint" implementor="#jobService" address="https://${jadice.server.hostname}:9001/jadiceServer">
Weitere Informationen
Informationen zu den Einstellungen können Sie der Dokumentation von Apache CXF Jetty entnehmen.
Treten Probleme bei der Aktivierung von TLS auf, hilft die System-Property -Djavax.net.debug=all
oft weiter, um das Problem einzugrenzen. Diese Einstellung kann in der Datei wrapper/wrapper.conf
eingetragen werden. Oracle bietet einen ausführlichen Artikel zum Thema "Debugging SSL/TLS Connections" an.
Related articles