ssl单向tomcat配置webservice访问方法
[*] tomcat 配置 单向 SSL
tomcat.keystore里面包含一张服务端证书的容器,用keytool工具生成。
服务端配置完毕
将tomcat.keystore里面的 服务端公钥证书导出 client.cer
创建一个信任证书库 将服务端公钥证书导入 ,在客户端加载信任库
Keytool -import -alias yangjm -file d://client.cer -keystore client.jks
输入信任库密码: password
客户端程序 执行
System.setProperty("javax.net.ssl.trustStore", "D://client.jks");
System.setProperty("javax.net.ssl.trustStorePassword","password");
添加信任库向服务端发送
报错异常
Caused by: javax.net.ssl.SSLKeyException: RSA premaster secret error
将D:\java\jre6\lib\ext 的 sunjce_provider.jar 拷到运行环境 运行通过
客户端代码:
public static void test1() {
//System.setProperty("java.protocol.handler.pkgs",
//"com.sun.net.ssl.internal.www.protocol");
//System.setProperty("java.protocol.handler.pkgs",
//"com.ibm.net.ssl.internal.www.protocol");
System.setProperty("javax.net.ssl.trustStore", "D://client.jks");
System.setProperty("javax.net.ssl.trustStorePassword",
"password");
URL url = null;
try {
url = new URL(
"https://localhost:8443/VerifyInfoService/services/itrusservice?wsdl");
} catch (MalformedURLException e) {
e.printStackTrace();
}
// 1.Qnameqname是qualified name 的简写
// 2.构成:由名字空间(namespace)前缀(prefix)以及冒号(:),还有一个元素名称构成
// 由发布的wsdl可知namespace为http://server.ws.platform.whaty.com/
QName qname = new QName("http://itrus.com/itrusservice", "itrusservice");
Service service = Service.create(url, qname);
ItrusservicePortType ms = (ItrusservicePortType) service
.getPort(ItrusservicePortType.class);
System.out.println(ms.test("tseet..."));
}运行结果tseet...
1 SSL单向认证概念
当客户端(服务请求方)向服务端(服务提供方)发起请求时,服务器端需要向客户端提供认证。服务端需要生成一个keystore和一个服务器密钥对儿(公钥和私钥),客户端需要生成一个truststore,然后导入服务端的公钥证书。
页:
[1]