Tomcat 配置WebService的HTTPS实现SSL的单双向认证
2014-07-03 14:07
736 查看
近日项目上使用Tomcat发布了一个Web Service服务,客户要求实现HTTPS的SSL安全技术提供服务接口,以下做个备份。
一、单向认证
1. 首先使用Keytool工具生成服务端的Keystore文件,Keytool工具实现确认下机器上是否配置了JDK的环境变量,如果没有的话需要进入JDK的当前目录执行命令了
keytool -genkey -alias webService_server -keystore server.keystore -keyalg RSA -keysize 4096 -storetype JKS
2. 导出服务端RSA证书并将证书导入到客户端truststore文件中,信任库文件被客户端使用,用于对服务端身份验证
keytool -export -alias webService_server -file webServiceServer.cer -storepass 123456a? -keystore server.keystore -storetype JKS
keytool -import -file webServiceServer.cer -storepass 123456a? -keystore client.truststore -alias serverkey -noprompt
3. 配置Tomcat根目录下conf/server.xml文件中以下内容,去注释
<Connector port="8443" protocol="HTTP/1.1" maxThreads="150"
minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true" SSLEnabled="true"
acceptCount="100" debug="0" scheme="https" secure="true" clientAuth="true" keystoreFile="server.keystore" keystorePass="password"sslProtocol="TLS" />
一、单向认证
1. 首先使用Keytool工具生成服务端的Keystore文件,Keytool工具实现确认下机器上是否配置了JDK的环境变量,如果没有的话需要进入JDK的当前目录执行命令了
keytool -genkey -alias webService_server -keystore server.keystore -keyalg RSA -keysize 4096 -storetype JKS
2. 导出服务端RSA证书并将证书导入到客户端truststore文件中,信任库文件被客户端使用,用于对服务端身份验证
keytool -export -alias webService_server -file webServiceServer.cer -storepass 123456a? -keystore server.keystore -storetype JKS
keytool -import -file webServiceServer.cer -storepass 123456a? -keystore client.truststore -alias serverkey -noprompt
3. 配置Tomcat根目录下conf/server.xml文件中以下内容,去注释
<Connector port="8443" protocol="HTTP/1.1" maxThreads="150"
minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true" SSLEnabled="true"
acceptCount="100" debug="0" scheme="https" secure="true" clientAuth="true" keystoreFile="server.keystore" keystorePass="password"sslProtocol="TLS" />
4.部署Axis服务,这里就不写如何部署了,直接启动Tomcat查看Wsdl
https://localhost:8443/ws/services/axisWS.Test?wsdl[/code]以上步骤完成了服务端的配置,下面是客户端的调用方式
5. 客户端调用代码public static void main(String[] args) { try { String endpoint = "https://localhost:8443/eomsWS/services/axisWS.Test"; // 1.创建service对象,通过axis自带的类创建 Service service = new Service(); URL url = new URL(endpoint); // 通过URL类的构造方法传入wsdlUrl地址创建URL对象 // 2.创建服务方法的调用者对象call,设置call对象的属性 Call call = (Call) service.createCall(); //配置客户端信任库文件路径 System.setProperty("javax.net.ssl.trustStore", "E:/keystore/client/client.truststore"); // 给call对象设置请求的URL属性 call.setTargetEndpointAddress(url); String serviceName = "sayHello"; // 给call对象设置调用方法名属性 call.setOperationName(new QName("http://loushang.ws",serviceName)); // 给call对象设置方法的参数名、参数类型、参数模式 call.addParameter("param", XMLType.XSD_STRING, ParameterMode.IN); // 设置调用方法的返回值类型 call.setReturnType(XMLType.SOAP_STRING); // 4.通过invoke方法调用webservice String param = "1222222"; String res = (String) call.invoke(new Object[] { param });// 调用服务方法 System.out.println(res); } catch (ServiceException e) { e.printStackTrace(); } catch (MalformedURLException e1) { e1.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } } 6. 运行该代码,如果出现接口输出结果表示连接成功。 二、双向认证 双向认证较上面的步骤多出一个生成客户端密钥库,并将客户端证书RSA文件导入到服务端信任库文件的过程,步骤如下: 1. 在单向认证1,2步骤后生成客户端密钥库keystore文件 keytool -genkey -dname " CN=webService_Client, OU=JN, O=JN, L=JN, S=JN, C=CN" -storepass 123456a? -keystore client.keystore -keyalg RSA -keypass 123456a? 2. 导出客户端端RSA证书并将证书导入到服务端端truststore文件中,该信任库文件被服务端使用,用于对客户端端身份验证 keytool -export -file webServiceClient.cer -storepass 123456a? -keystore client.keystore keytool -import -file webServiceClient.cer -storepass 123456a? -keystore server.truststore -alias clientkey -noprompt 3. 在Tomcat下conf/server.xml中的Connector 中添加truststoreFile和truststorePass,配置见单向认证中的3种追加 4. 修改客户端调用代码 //配置客户端信任库验证文件路径 System.setProperty("javax.net.ssl.trustStore", "E:/keystore/client/client.truststore"); //配置服务端信任库验证文件路径 System.setProperty("javax.net.ssl.keyStore", "E:/keystore/client/client.keystore"); 5. 重启Tomcat测试代码,即可。 参考文献路径: http://www.ibm.com/developerworks/cn/webservices/ws-secaxis1/
相关文章推荐
- TOMCAT SSL 双向认证配置(HTTPS)
- 图文:CentOS 下对 Nginx + Tomcat 配置 SSL 实现服务器 / 客户端双向认证
- CentOS 下对 Nginx + Tomcat 配置 SSL 实现服务器 / 客户端双向认证
- CentOS 下对 Nginx + Tomcat 配置 SSL 实现服务器 / 客户端双向认证
- 图文:CentOS 下对 Nginx + Tomcat 配置 SSL 实现服务器 / 客户端双向认证
- tomcat_ssl环境配置实现单向和双向认证
- 图文:CentOS 下对 Nginx + Tomcat 配置 SSL 实现服务器 / 客户端双向认证
- tomcat实现SSL配置(双向认证)
- CentOS 下对 Nginx + Tomcat 配置 SSL 实现服务器 / 客户端双向认证
- Nginx、SSL双向认证、PHP、SOAP、Webservice、https
- Tomcat 配置 SSL (单向认证、双向认证)
- TOMCAT-SSL双向认证-配置实例 .
- TOMCAT-SSL双向认证-配置实例
- TOMCAT-SSL双向认证-配置实例
- Tomcat简单配置实现SSL单向认证
- Tomcat配置SSL双向认证
- keytool+tomcat配置HTTPS双向证书认证
- TOMCAT-SSL双向认证-配置实例
- Tomcat6配置使用SSL双向认证
- keytool+tomcat配置HTTPS双向证书认证(无openssl)