axis通过HTTPS(SSL加密)方式访问Webservice

最近,很多项目需要把服务通信由http协议变更为https,已增加安全性,参考网上一些资料,在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 RSA

keytool -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.keystore

keytool -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.keystore

keytool -import -file ths_https.cer %KS_PASS% -keystore server.truststore -alias clientkey -noprompt

密码设置的是123456,可以随便设定,把脚本中所有的123456替换掉就可以了,其他参数无所谓。

注:在什么位置执行该脚本,这4个文件就会生成到什么位置。

2.更改tomcat支持https,修改配置文件(server.xml

添加

<Connector connectionTimeout="20000" 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.keystoreserver.truststore,根据自己的实际情况填写。

端口号可根据实际情况修改

注释掉:

<ListenerclassName="org.apache.catalina.core.AprLifecycleListener"SSLEngine="on" />

重启tomcat,OK!

3.客户端测试程序,核心代码。

不再赘述Axis如何发布和调用Webservice,详情度娘。

public class Test{

public static void main(String[] args) throws Exception {

System.setProperty("javax.net.ssl.keyStore","D:\\client.keystore");

System.setProperty("javax.net.ssl.keyStorePassword", "123456");

System.setProperty("javax.net.ssl.trustStore","D:\\client.truststore");

System.setProperty("javax.net.ssl.trustStorePassword", "123456");

Service service = new Service();

String endpoint = "https://ip:8443/dataexsys/services/dataexService?wsdl";

String operationName = "getDirService";

Call call = (Call) service.createCall();

// 设置调用服务来源

call.setTargetEndpointAddress(endpoint);

// 设置调用方法名

call.setOperationName(new QName(endpoint, operationName));

// 调用接口

String ret = (String)call.invoke(new Object[]{});

System.out.println(ret);

}

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值