ssl加密 java_如何通过HTTPS(SSL加密)方式访问webservice(java环境)

本文介绍了如何在Java环境中通过HTTPS(SSL加密)方式访问Web Service。包括生成服务器和客户端证书、配置Tomcat的server.xml、设置客户端代码以及配置服务端项目web.xml等步骤。
摘要由CSDN通过智能技术生成

1. 生成证书

这里用到的文件,我们存放在D:/SSL/文件夹内,其中D:/SSL/server/内的文件是要交给服务器用的,D:/SSL/client/内的文件是要交给客户端用的。

1.1生成服务端证书

dos状态下执行命令:

keytool -genkey -v -alias tomcat -keyalg RSA -keystore

D:/SSL/server/tomcat.keystore -dname

"CN=127.0.0.1,OU=pde,O=pde,L=Peking,ST=Peking,C=CN" -validity 3650

-storepass pdepde -keypass pdepde

说明:

keytool 是JDK提供的证书生成工具,所有参数的用法参见keytool

–help

-genkey创建新证书

-v详细信息

-alias tomcat 以”tomcat”作为该证书的别名。这里可以根据需要修改

-keyalg RSA 指定算法

-keystore D:/SSL/server/tomcat.keystore 保存路径及文件名

-dname "CN=127.0.0.1,OU=pde,O=pde,L=Peking,ST=Peking,C=CN"

证书发行者身份,这里的CN要与发布后的访问域名一致。但由于我们是自己发行的证书,如果在浏览器访问,仍然会有警告提示

-validity 3650证书有效期,单位为天

-storepass pdepde 证书的存取密码

-keypass pdepde 证书的私钥

1.2 生成客户端证书

执行命令:

keytool -genkey -v -alias client -keyalg RSA -storetype PKCS12

-keystore D:/SSL/client/client.p12 -dname

"CN=client,OU=pde,O=pde,L=bj,ST=bj,C=CN" -validity 3650 -storepass

client -keypass client

说明:

参数说明同上。这里的-dname证书发行者身份可以和前面不同

1.3 导出客户端证书

执行命令:

keytool -export -alias client -keystore D:/SSL/client/client.p12

-storetype PKCS12 -storepass client -rfc -file

D:/SSL/client/client.cer

说明:

-export执行导出

-file导出文件的文件路径

1.4 把客户端证书加入服务端证书信任列表

执行命令:

keytool -import -alias client

-v -file

D:/SSL/client/client.cer -keystore

D:/SSL/server/tomcat.keystore -storepass pdepde

说明:

参数说明同前。这里提供的密码是服务端证书的密码。

1.5 导出服务端证书

执行命令:

keytool -export -alias tomcat -keystore

D:/SSL/server/tomcat.keystore -storepass pdepde -rfc -file

D:/SSL/server/tomcat.cer

说明:

把服务端证书导出。这里提供的密码也是服务端证书的密码。

1.6 生成客户端信任列表

执行命令:

keytool -import -file D:/SSL/server/tomcat.cer -storepass pdepde

-keystore D:/SSL/client/client.truststore -alias

tomcat -noprompt

说明:

让客户端信任服务端证书

2. 配置服务端参数

2.1 配置Tomcat 目录下的/conf/server.xml

port="8443" protocol="HTTP/1.1" SSLEnabled="true"

maxThreads="150"

scheme="https" secure="true" clientAuth="true"

sslProtocol="TLS"

keystoreFile="D:/SSL/server/tomcat.keystore"

keystorePass="pdepde"

truststoreFile="D:/SSL/server/tomcat.keystore"

truststorePass="pdepde" />

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

clientAuth="true" sslProtocol="TLS"

keystoreFile="D:/SSL/server/tomcat.keystore" keystorePass="pdepde"

truststoreFile="D:/SSL/server/tomcat.keystore"

truststorePass="pdepde" />

这里的参数clientAuth决定了是否执行强制客户端证书验证,true-只允许持有证书的客户端执行https连接

2.2 配置服务端项目web.xml

增加:

services

/services/*

CONFIDENTIAL

这里的"/services/*"指定了必须采用https的链接,当访问这些路径时,http协议的访问将被转发至https协议。这里需要根据服务端项目中web

service的访问地址来配置

3. 修改客户端代码

在执行访问之前,增加:

System.setProperty("javax.net.ssl.trustStore",

"D:/SSL/client/client.truststore");

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

System.setProperty("javax.net.ssl.keyStoreType","PKCS12") ;

System.setProperty("javax.net.ssl.keyStore","D:/SSL/client/client.p12")

;

System.setProperty("javax.net.ssl.keyStorePassword","client")

;

String

endPoint="https://127.0.0.1:8443/easbCut/services/ApplyFormService";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值