webservice ssl双向认证配置

1、在tomcat中安装axis2插件

2、生成证书,用jdk自带的keytool

服务端
keytool -genkey -alias Server -dname "CN=192.168.10.100, OU=JH, O=JH, L=HangZhou, S=ZheJiang, C=CN" -keystore server.keystore -keyalg RSA
keytool -export -alias Server -file server.cer -storepass 123456 -keystore server.keystore 
keytool -import -file server.cer -storepass 123456 -keystore client.truststore -alias serverkey -noprompt

客户端
keytool -genkey -alias Client -dname "CN=192.168.10.101, OU=JH, O=JH, L=HangZhou, S=ZheJiang, C=CN" -keystore client.keystore -keyalg RSA
keytool -export -alias Client -file client.cer -storepass 123456 -keystore client.keystore 
keytool -import -file client.cer -storepass 123456 -keystore server.truststore -alias clientkey -noprompt
keytool命令记录
1、生成服务器端私钥kserver.keystore文件 2、根据私钥,导出服务器端安全证书 3、将服务器端证书,导入到客户端的Trust KeyStore中 4、生成客户端私钥kclient.keystore文件 5、根据私钥,导出客户端安全证书 6、将客户端证书,导入到服务器端的Trust KeyStore中

CN--ip或者域名

3、修改tomcat-->conf-->server.xml配置,添加

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               keystoreFile="C:\\tomcat\\keystore\\server.keystore" 
               keystorePass="123456" 
               truststoreFile="C:\\tomcat\\keystore\\server.truststore" 
               truststorePass="123456"
               clientAuth="true" sslProtocol="TLS" />

port-->https端口

SSLEnabled="true"启用SSL认证

keystoreFile-->keystore文件存储的位置  keystorePass-->keystore文件密码

truststoreFile-->truststore文件存储的位置  truststorePass-->truststore文件存储的位置

clientAuth="true" 双向认证  "false"单向认证

4、如果有需求对所有的请求都适用https访问的话,需要修改tomcat-->conf-->web.xml配置,添加

 <security-constraint>     
        <web-resource-collection >   
           <web-resource-name >SSL</web-resource-name>   
           <url-pattern>/*</url-pattern>   
        </web-resource-collection>   
        <user-data-constraint>   
           <transport-guarantee>CONFIDENTIAL</transport-guarantee>   
       </user-data-constraint>   
     </security-constraint> 

注意:url-pattern根据自己的需求进行修改,也可以在axis2中的web.xml进行相同配置

5、对Axis2进行配置,修改tomcat-->webapps-->axis2-->WEB-INF-->conf-->web.xml,添加

<transportReceiver name="https" class="org.apache.axis2.transport.http.AxisServletListener">  
        <parameter name="port">8443</parameter>  
</transportReceiver>  
<transportSender name="https" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">  
        <parameter name="PROTOCOL">HTTP/1.1</parameter>  
        <parameter name="Transfer-Encoding">chunked</parameter>  
</transportSender>  

6、在程序中添加代码指定证书位置,在xxxxFactory类的getXXXStub方法中调用客户端的代码之前加上:

System.setProperty("javax.net.ssl.keyStore","/Users/linjian/Desktop/keystores/test/client.keyStore");
System.setProperty("javax.net.ssl.keyStorePassword", "123456");
System.setProperty(
"javax.net.ssl.trustStore","/Users/linjian/Desktop/keystores/test/client.truststore"); System.setProperty("javax.net.ssl.trustStorePassword", "123456");

 

posted @ 2015-09-22 17:05  Delena  阅读(2229)  评论(0编辑  收藏  举报