我在Spring配置中定義一個簡單的WebService:如何在Java中啓用TLS/SSL,用於Web服務的Spring/CXF?
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cxf="http://cxf.apache.org/core"
xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:wsa="http://cxf.apache.org/ws/addressing"
xmlns:http="http://cxf.apache.org/transports/http/configuration"
xmlns:wsrm-policy="http://schemas.xmlsoap.org/ws/2005/02/rm/policy"
xmlns:wsrm-mgr="http://cxf.apache.org/ws/rm/manager"
xmlns:httpj="http://cxf.apache.org/transports/http-jetty/configuration"
xsi:schemaLocation="
http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
http://schemas.xmlsoap.org/ws/2005/02/rm/policy http://schemas.xmlsoap.org/ws/2005/02/rm/wsrm-policy.xsd
http://cxf.apache.org/ws/rm/manager http://cxf.apache.org/schemas/configuration/wsrm-manager.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/transports/http-jetty/configuration http://cxf.apache.org/schemas/configuration/http-jetty.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-*.xml" />
<bean id="logInbound" class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
<bean id="logOutbound" class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
<bean id="cxf" class="org.apache.cxf.bus.CXFBusImpl">
<property name="inInterceptors">
<list>
<ref bean="logInbound"/>
</list>
</property>
<property name="outInterceptors">
<list>
<ref bean="logOutbound"/>
</list>
</property>
<property name="outFaultInterceptors">
<list>
<ref bean="logOutbound"/>
</list>
</property>
<property name="inFaultInterceptors">
<list>
<ref bean="logInbound"/>
</list>
</property>
</bean>
<httpj:engine-factory bus="cxf">
<httpj:engine port="9001">
<httpj:threadingParameters minThreads="10" maxThreads="100" />
<httpj:connector>
<bean class="org.eclipse.jetty.server.bio.SocketConnector">
<property name="port" value="9001" />
</bean>
</httpj:connector>
<httpj:handlers>
<bean class="org.eclipse.jetty.server.handler.DefaultHandler" />
</httpj:handlers>
<httpj:sessionSupport>true</httpj:sessionSupport>
</httpj:engine>
</httpj:engine-factory>
<bean id="serviceFactory" class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean"
scope="prototype">
<property name="serviceConfigurations">
<list>
<bean class="org.apache.cxf.jaxws.support.JaxWsServiceConfiguration" />
<bean
class="org.apache.cxf.aegis.databinding.XFireCompatibilityServiceConfiguration" />
<bean class="org.apache.cxf.service.factory.DefaultServiceConfiguration" />
</list>
</property>
</bean>
<bean id="eventWebService" class="org.myapp.EventWS">
<property name="timeout" value="${timeoutWS}" />
</bean>
<jaxws:endpoint id="event" implementor="#eventWebService"
address="${event.endpoint}">
<jaxws:serviceFactory>
<ref bean="serviceFactory" />
</jaxws:serviceFactory>
</jaxws:endpoint>
它像一個簡單的WS在event.endpoint = HTTP \://本地主機\:9001 /事件
但現在,我想使用服務器私鑰確保與TLS的連接。 我知道如何使用SSLContext(http://download.oracle.com/javase/6/docs/api/javax/net/ssl/SSLContext.html)來做到這一點,但Spring對我來說是新事物。 我想我需要用另一種配置創建一個新的端點?或使用另一個ServiceFactory?
問候, 剃刀
奇怪的是,我必須配置連接器,tlsServerParameters不起作用。 \t \t \t \t \t \t \t \t \t <屬性名= 「端口」 值= 「9101」/> \t \t \t \t \t <屬性名= 「密鑰庫」 值= 「./config/keystore-gateway」/> \t \t \t \t \t <屬性名= 「密碼」 的值= 「通」/> <屬性南E = 「keyPassword」 值= 「通」/> <屬性名= 「needClientAuth」 值= 「真」/> <屬性名= 「wantClientAuth」 值= 「真」/> \t \t \t \t \t \t \t httpj:connector> –
razor
不好意思,我在這裏忍不住詳細點 –