搜档网
当前位置:搜档网 › Tomcat配置https安全访问的Axis2 Webservice给java和C#调用

Tomcat配置https安全访问的Axis2 Webservice给java和C#调用

Tomcat配置https安全访问的Axis2 Webservice给java和C#调用
Tomcat配置https安全访问的Axis2 Webservice给java和C#调用

一.前期准备。

1. 如何编写Axis2 Webservice服务这里就不说了,有需要的可以参考本人百度文库的另一篇文档:https://www.sodocs.net/doc/9b18549139.html,/view/aafc47e5580216fc710afd58.html

2. 下载axis2-1.7.1-war.zip(其他版本亦可),解压得到axis2.war,放到Tomcat的webapps 目录下,启动tomcat,会自动生成axis2文件夹。

3. 把写好代码的axis2程序包(本例是AxisServer.aar)放到axis2的services目录下,启动Tomcat(即启动Axis2服务)

二.生成https访问的SSL安全证书等文件

1.随便在一个文件夹下,新建一个server和一个client的空文件夹。并新建一个keytools.bat 的批处理,编辑批处理的内容如下(红色方块部分需按自己的实际情况填写):

set SERVER_DN="CN=127.0.0.1, OU=SPH, O=SPH, L=sh, S=sh, C=CN"

set CLIENT_DN="CN=Client, OU=SPH, O=SPH, L=sh, S=sh, C=CN"

set PASS_SET= 123456

keytool -genkey -v -alias server -keyalg RSA -keystore C:/ZipOut/server/server.keystore -dname %SERVER_DN% -validity 3650 -storepass %PASS_SET% -keypass %PASS_SET%

keytool -genkey -v -alias client -keyalg RSA -storetype PKCS12 -keystore C:/ZipOut/client/client.p12 -dname %CLIENT_DN% -validity 3650 -storepass client -keypass client

keytool -export -alias client -keystore C:/ZipOut/client/client.p12 -storetype PKCS12 -storepass client -rfc -file C:/ZipOut/client/client.cer

keytool -import -alias client -v -file C:/ZipOut/client/client.cer -keystore C:/ZipOut/server/server.keystore -storepass %PASS_SET%

keytool -export -alias server -keystore C:/ZipOut/server/server.keystore -storepass %PASS_SET% -rfc -file C:/ZipOut/server/server.cer

keytool -import -file C:/ZipOut/server/server.cer -storepass %PASS_SET% -keystore C:/ZipOut/client/client.truststore -alias server -noprompt

pause

2.双击批处理文件,即会在server和client目录下生成需要的证书等文件。

三.配置Tomcat和Axis2使用https访问

1.进入tomcat的conf目录,修改server.xml文件,添加8443端口使用https访问,如下代码:

maxThreads="150" scheme="https" secure="true"

clientAuth="true " sslProtocol="TLS"

keystoreFile="C:/ZipOut/server/server.keystore" keystorePass="123456"

truststoreFile="C:/ZipOut/server/server.keystore" truststorePass="123456"

/>

2.进入axis2的conf目录,修改axis2.xml文件,添加两段代码:

8443

class="https://www.sodocs.net/doc/9b18549139.html,monsHTTPTransportSender">

HTTP/1.1

chunked

3.重启Tomcat,访问:https://localhost:8443/axis2/services/listServices,以下界面即成功。

四.生成Webservice客户端

1.进入axis2-1.7.1-bin.zip的解压目录(注意不是axis2-1.7.1-war.zip),进入bin目录,启动Windows命令行,进入bin目录下,运行一下命令:wsdl2java.bat -uri http://localhost:8080/axis2/services/AxisServer?wsdl -p com.axis.client -s -o stub。注意uri是http 和8080端口的,不是https和8443的,因为我们的证书是自己生成的,是不被权威机构认证的证书,所以不能用https,否则会报异常。命令执行完后,会生成stub文件夹,在文件夹最底层会有AxisServerStub.java

五.使用java编写客户端访问webservice

1.把生成的AxisServerStub.java文件复制到java项目中,建立包名应该跟生成客户端文件时输入的一致,否则文件会报错,需要自己手动改正(本例是com.axis.client)。把AxisServerStub.java文件复制到java项目后,手动替换webservice访问方式。

2.替换为https访问之后,在屏蔽了可信任的安全证书访问时,会提示无有效的安全证书的异常,如下:

3.添加了可信任的安全证书访问时,即可正常访问。信任证书可以是绝对路径下的也可以是项目路径下的。

六.使用C# (VS2010)编写客户端访问webservice

1. 新建Windows窗体应用程序的项目,添加服务引用,按以下步骤操作,即可添加服务。

2. 新建Util的静态类,内容如下:

public class Util

{

///

/// Sets the cert policy.

///

public static void SetCertificatePolicy()

{

ServicePointManager.ServerCertificateValidationCallback

+= RemoteCertificateValidate;

}

///

/// Remotes the certificate validate.

///

private static bool RemoteCertificateValidate(

object sender, X509Certificate cert,

X509Chain chain, SslPolicyErrors error)

{

// trust any certificate!!!

System.Console.WriteLine("Warning, trust any certificate");

return true;

}

}

3. 编写窗体代码,代码如下(如果把Util.SetCertificatePolicy()屏蔽,也会报安全证书异常,自己可以试一下效果):

相关主题