我正在尝试构建一个Glassfish托管的Web服务(用于开发测试)一个WCF托管的Web服务.我有WCF托管服务的WSDL,我可以从WCF托管的WSDL构建
Java服务和
Java客户端,没有任何问题. WSDL使用相互证书安全性进行数据交换.
WSDL具有与WCF服务器的主机证书相匹配的嵌入式X509证书.
当我尝试将我的Java客户端连接到Glassfish托管的Java服务时,我当然会得到证书错误.
那么我要采取什么步骤才能使之工作?我假设:
A)我需要将WSDL中的X509证书字符串替换为安装Glassfish时创建的自签名Glassfish证书“s1as”的内容.
B)将服务器网络配置的Glassfish服务器SSL参数设置为使用Glassfish安装附带的默认cacerts.jks和keystore.jks证书存储.即使我在这里不使用SSL,我假定服务器需要知道其信任库和密钥库在HTTP之间执行相互证书安全性的位置.
C)将’s1as’服务器证书添加到Java客户端的信任库.
D)将以前用于原始WCF连接客户端的任何证书添加到Glassfish服务器的密钥库. (我不知道这个吗?)
有没有我在这里失踪的东西?任何帮助将不胜感激.
解决方法
显然,您正在使用消息层安全性,而不是SSL.所以通信层没有加密,只是消息本身.
这是在Glassfish使用WSIT功能完成的.我建议您参考WSIT教程:http://docs.oracle.com/cd/E19316-01/820-1072/ahiem/index.html中的互证证书安全性示例.
基本上,WSIT使用as-install / domains / domain1 / config中的密钥库,您需要在WSIT描述符中通过别名指定它们.
Greets,Geert.