AXIS通过HTTPS(SSL加密)方式访问Webservice
来源:互联网 发布:围堰稳定性计算软件 编辑:程序博客网 时间:2024/04/26 16:17
最近,客户想把服务通信有http协议变更为https增加安全性,以为修改下tomcat,配置下就OK了,但我们的客户端请求SSO服务器的Webservice请求走的是http,这就发生了悲剧。
怎么办?
先从配置tomcat开始做起吧:
1、 使用JDK自带的工具创建密匙库和信任库。
使用keytool生成密钥库和信任库
如下4个文件:
client.keystore,client.truststore,server.keystore,server.truststore
为了方便大家,我将命令行写入脚本。
脚本如下,存入bat文件:
set SERVER_DN="CN=Server, OU=ths, O=ths, L=BEIJING, S=BEIJING, C=CN" set CLIENT_DN="CN=Client, OU=ths, O=ths, L=BEIJING, S=BEIJING, C=CN" set KS_PASS=-storepass 123456 set KEYINFO=-keyalg RSAkeytool -genkey -alias Server -dname %SERVER_DN% %KS_PASS% -keystore server.keystore %KEYINFO% -keypass 123456 keytool -export -alias Server -file ths_https.cer %KS_PASS% -keystore server.keystorekeytool -import -file ths_https.cer %KS_PASS% -keystore client.truststore -alias serverkey -noprompt keytool -genkey -alias Client -dname %CLIENT_DN% %KS_PASS% -keystore client.keystore %KEYINFO% -keypass 123456 keytool -export -alias Client -file ths_https.cer %KS_PASS% -keystore client.keystorekeytool -import -file ths_https.cer %KS_PASS% -keystore server.truststore -alias clientkey -noprompt
密码我设置的是123456,这个你可以自己设定,把脚本中所有的123456替换掉就可以了,其他参数(文件名称啥的)无所谓。
注:在什么位置执行该脚本,这4个文件就会生成到什么位置。
2、 更改tomcat支持https,修改配置文件(server.xml)
增加:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https"secure="true" clientAuth="false"
keystoreFile="d:\server.keystore"keystorePass="123456"
truststoreFile="d:\server.truststore" truststorePass="123456"
sslProtocol="TLS" />
注:红色路径指向上一步中生成的server.keystore和server.truststore,根据自己的实际情况填写。
端口号可根据实际情况修改
去掉:
<ListenerclassName="org.apache.catalina.core.AprLifecycleListener"SSLEngine="on" />
重启tomcat,OK!
再来配置Axis
在server-config.wsdd中修改name为SSOService的节点,增加红色部分
<service name="SSOService"provider="java:RPC"> <requestFlow><handler type="soapmonitor"/></requestFlow><responseFlow><handler type="soapmonitor"/></responseFlow> <parametername="allowedMethods" value="*" /> <parametername="className"value="com.ths.platform.sso.services.SSOService" /></service>
注:使用Axis 一般server-config.wsdd再web-inf目录下。
4、客户端测试程序,核心代码。不再赘述Axis如何发布和调用Webservice,不懂的,可以自己上网搜索
public class Test{ public static void main(String [] args) throws Exception { //这里是httpsString endpoint = "https://localhost:" +"8443"+ "/axis/HelloWorld";//client.keystore和client.truststore路径根据自己情况填写System.setProperty("javax.net.ssl.keyStore", "E:\\client.keystore"); System.setProperty("javax.net.ssl.keyStorePassword", "password"); System.setProperty("javax.net.ssl.trustStore", "E:\\client.truststore"); System.setProperty("javax.net.ssl.trustStorePassword", "password"); //关键是上面几行代码,下面是调用Webservice常规步骤Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress( new java.net.URL(endpoint) ); call.setOperationName( "sayHello" ); String result = (String) call.invoke( new Object[] {} ); System.out.println( result ); } }
早晨刚刚拿到这个问题的时候,感觉有些棘手,如果懂得基本的原理,有Webservice和https基础,其实并不困难。
加油,各位。
- AXIS通过HTTPS(SSL加密)方式访问Webservice
- 如何通过HTTPS(SSL加密)方式访问webservice
- 如何通过HTTPS(SSL加密)方式访问webservice
- 如何通过HTTPS(SSL加密)方式访问webservice
- 通过HTTPS(SSL加密)方式访问webservice
- 如何通过HTTPS(SSL加密)方式访问web service
- 如何通过HTTPS(SSL加密)方式访问web service
- 如何通过HTTPS(SSL加密)方式访问web service
- HTTPS(SSL加密)webservice客户端访问总结
- HTTPS(SSL加密)webservice客户端访问总结
- 如何通过HTTPS(SSL加密)方式访问web service (java环境)
- 如何通过HTTPS方式访问webservice
- Webservice 通过SSL加密传输
- Webservice 通过SSL加密传输
- 关于AXIS WebService通过HTTPS协议访问WAS Web服务错误问题的解决方案
- HttpClient 访问SSL WebService 方式
- 用jmeter通过ssl验证访问https
- 用jmeter通过ssl验证访问https
- uva10795(汉莫塔)
- NYOJ_68
- c语言-动态内存分配
- 关于messagebox的使用
- 分支-12. 计算火车运行时间(15)
- AXIS通过HTTPS(SSL加密)方式访问Webservice
- NYOJ 题目116士兵杀敌(二)
- GPT硬盘安装Win8.1 (64bit)+CentOS7 双系统
- MongoDB用户认证和权限
- linux下的source命令
- Linux下移植OpenCV + Qt 到ARM(Tiny6410)总结
- servlet处理request和response中文乱码
- C#中Label设置为透明
- hdoj 1102 Constructing Roads 【最小生成树】