2017-01-17 1 views
0

WildFly 8.2.1에서는 기존 webservice (JAX-WS)가 SSL을 사용하도록 노력하고 있지만 빠른 시작에서 SSL을 사용하지 못했으며 Google에 제공 한 정보가 제한적입니다. . 지금까지 나는 web.xml 파일이 추가되었습니다 :웹 서비스에서 SSL을 사용하자

<security-constraint> 
    <display-name>Foo security</display-name> 
    <web-resource-collection> 
     <web-resource-name>FooService</web-resource-name> 
     <url-pattern>/foo/FooService</url-pattern> 
     <http-method>POST</http-method> 
    </web-resource-collection> 
    <user-data-constraint> 
     <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
    </user-data-constraint> 
</security-constraint> 

이 내 standalone.xml에 있습니다

<subsystem xmlns="urn:jboss:domain:webservices:1.2"> 
    <wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host> 
    <endpoint-config name="Standard-Endpoint-Config"/> 
    <endpoint-config name="Recording-Endpoint-Config"> 
    <pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM"> 
    <handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/> 
    </pre-handler-chain> 
    </endpoint-config> 
    <client-config name="Standard-Client-Config"/> 
</subsystem> 

하지만 충분하지 분명히; 내가 standalone/data/wsdl/foo.ear/foo.war/FooService/Bar.wsdl으로 볼 때 나는 다음을 참조하십시오 EAR/WAR에서 soap:address.location가 그냥 자리 (나는 값이 무시됩니다 가정)으로 가득 것을

<service name="FooService"> 
    <port binding="foowsb:FooBinding" name="FooBinding"> 
     <soap:address location="http://localhost:8080/foo/FooService"/> 
    </port> 
</service> 

참고.

보안 영역을 설정하고 keytool (내가 한)을 사용하여 자체 서명 된 인증서를 만드는 방법에 대한 정보를 찾았지만 함께 링크해야하는 방법을 완전히 놓칩니다.

또한 wsdl-uri-scheme=https을 설정하려고했으나 최신 버전의 CXF에서만 지원됩니다. 지금은 서비스가 https://localhost:8443에 노출되었다 -

+0

JBoss 포럼에 대한 크로스 링크 : https://developer.jboss.org/message/967556#967556 –

답변

0

는 교체 할 것 때 soap:address.location 값이 REPLACE_WITH_ACTUAL_URL-https://REPLACE_WITH_ACTUAL_URL 트릭을했다는 것을 변화하기 때문에, 무시하지 않는 것 같다. 내가 standalone.xml에서해야 할 일을했을 더 많은 단계의 몇 가지 있습니다

: undertow에가, https-listener을 추가

<security-realm name="SslRealm"> 
    <server-identities> 
     <ssl> 
     <keystore path="foo.keystore" relative-to="jboss.server.config.dir" keystore-password="foo1234" alias="foo" key-password="foo1234"/> 
     </ssl> 
    </server-identities> 
    <authentication> 
     <truststore path="foo.truststore" relative-to="jboss.server.config.dir" keystore-password="foo1234"/> 
    </authentication> 
</security-realm> 

주 나는 같은 키 저장소를 재사용 :

<https-listener name="secure" socket-binding="https" security-realm="SslRealm"/> 

가 SslRealm을 정의 서버 및 클라이언트. 내 고객 개발하는 동안 같은 WF 노드에 ATM 때문에, 나는 너무,이 설정에 클라이언트 측 부분이 있었다 :

<system-properties> 
    <property name="javax.net.ssl.trustStore" value="${jboss.server.config.dir}/foo.keystore"/> 
    <property name="javax.net.ssl.trustStorePassword" value="foo1234"/> 
    <property name="org.jboss.security.ignoreHttpsHost" value="true"/> 
</system-properties> 

마지막 속성이 cxf.tls-client.disableCNCheck와 9 + WF에서 교체해야합니다.