Keine Verbindung mit SSL-webservice mit cxf http-conduit
Ich versuche, eine Verbindung zu einem SOAP-webservice und ein cert für die Authentifizierung. Ich bin derzeit mit dem cxf http-Kanal zu finden Sie mein Zertifikat. Ich erhielt eine p12-Datei aus dem service, die ich bin, zu wollen, zu nennen. Ich habe den Import des p12 in einen jks. Ich legte die jks in den class-path zusammen mit meiner cxf.xml Seite. Ich habe meine modifizierten web.xml enthalten die context-param und die listener-Klasse, aber ich bin noch immer logs von dem server sagen kein Zertifikat zur Verfügung gestellt. Ich habe überall gesucht nach Lösungen aber nichts hat geklappt so weit. Jede Hilfe wird sehr geschätzt
CXF.XML
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sec="http://cxf.apache.org/configuration/security"
xmlns:http="http://cxf.apache.org/transports/http/configuration"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xsi:schemaLocation="
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://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<http:conduit name="*.http-conduit">
<http:tlsClientParameters>
<sec:keyManagers keyPassword="changeit">
<sec:keyStore type="JKS" password="changeit"
resource="myKeystore.jks"
/>
</sec:keyManagers>
<sec:trustManagers>
<sec:keyStore type="JKS" password="changeit"
resource="myKeystore.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>
</http:tlsClientParameters>
<http:client AutoRedirect="true" Connection="Keep-Alive"/>
</http:conduit>
</beans>
WEB.XML
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:cxf.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stimme ich mit @hooknc letzten Kommentar. Stellen Sie sicher, dass Ihr keystore enthält den privaten Schlüssel Eintrag. Stellen Sie auch privatekey Passwort gleich keystore-Kennwort einzugeben. Sie können testen Sie Ihr service mit dem unten aufgeführten code. Ich schrieb es für cxf-version 3.0.0-milestone2, da brauche ich mehrere Signaturen, aber ich denke, der code sollte funktionieren, auch mit stabilen Zweig 2.x
Glaube ich nicht nur darum, die truststore - (jks) in der classpath wird so, wie Sie denken, es wird. Ich bin ziemlich zuversichtlich, dass Sie benötigen, rufen Sie unsere der truststore, die Sie verwenden möchten, über die vm-Optionen.
Add-Djavax.net.ssl.trustStore={file_path_to_your_jks}, um Ihre Anwendung VM-Argumente. Möglicherweise müssen Sie auch zu verwenden -Djavax.net.ssl.trustStorePassword={your_jks_password}, wenn das default-Passwort 'changeit' nicht verwendet.