Jadice Server Webservice-Schnittstelle mit TLS absichern

Step-by-step guide

Um die Webservice-Schnittstelle von jadice server über TLS abzusichern müssen drei Dinge angepasst werden.

  1. 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 Datei jetty-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                  https://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://cxf.apache.org/configuration/security                 https://cxf.apache.org/schemas/configuration/security.xsd
        http://cxf.apache.org/transports/http/configuration            https://cxf.apache.org/schemas/configuration/http-conf.xsd
        http://cxf.apache.org/transports/http-jetty/configuration      https://cxf.apache.org/schemas/configuration/http-jetty.xsd
        http://cxf.apache.org/core                                     https://cxf.apache.org/schemas/core.xsd">
        <cxf:bus />
        <httpj:engine-factory bus="cxf">
            <httpj:engine port="9000">
                <httpj:tlsServerParameters>
                    <sec:keyManagers keyPassword="password">
                        <sec:keyStore
                            file="C:\path\to\your\keystore.jks"
                            password="password" type="JKS" />
                    </sec:keyManagers>
                    <sec:trustManagers>
                        <sec:keyStore
                            file="C:\path\to\your\keystore.jks"
                            password="password" type="JKS" />
                    </sec:trustManagers>
                    <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>
  2. Um die oben erzeugte Konfigurationsdatei in jadice server einzubinden muss in der Datei server-config/application/server.xml folgende Zeile ergänzt werden  - und zwar nach dem Import der soap.xml:

    Ergänzung in server.xml
    <import resource="jetty-tls.xml"/>


  3. Die Addresse und der Port in der Datei server-config/application/soap.xml entsprechend der Werte im jetty-tls.xml anpassen

    Anpassung in soap.xml
    <jaxws:endpoint id="jobServiceEndpoint" implementor="#jobService"
        address="https://${jadice.server.hostname}:9000/jadiceServer">

Absicherung von Passwörtern

Zur Absicherung von Passwörtern, siehe Abschnitt Passwörter absichern im analogen Artikel zur REST-Schnittstelle.

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.