我为这个问题真正的新手质量道歉。
我有一个EJBCA服务器,上面有两个CA.一个是我用。创建服务器实例的默认值。
我从EJBCA获取了wsdl并用它生成了Java代码。
使用生成的java客户端代码,我正在尝试打开与EJBCA服务器的连接 据EJBCA在这里说:http://ejbca.sourceforge.net/ws/org/ejbca/core/protocol/ws/client/gen/package-summary.html
这是初始化与服务器的连接的方法。
我从EJBCA服务器获取了truststore.jks文件,并从服务器获取了superadmin.jks文件,并将其放在我的本地计算机上,并将其作为资源提供给我的应用程序。
val truststore = this.getClass.getClassLoader.getResource("pathto/wsTrustStore")
System.setProperty("javax.net.ssl.trustStore", truststore.getFile)
System.setProperty("javax.net.ssl.trustStorePassword","wsTrustStorePassword")
val keystore = this.getClass.getClassLoader.getResource("pathto/superadminKeyStore")
System.setProperty("javax.net.ssl.keyStore", keystore.getFile)
System.setProperty("javax.net.ssl.keyStorePassword", "superadminKeyStorePassword")
val qname = new QName(componentConfig.getString("http://ws.protocol.components.ejbca.org/"), "EjbcaWSService")
val service = new EjbcaWSService(new URL("https://myejbcaserver.com:8443/ejbca/ejbcaws/ejbcaws?wsdl"), qname)
service.getEjbcaWSPort
这是java ssl调试日志
* CertificateRequest 证书类型:RSA,DSS,ECDSA 证书颁发机构: ServerHelloDone * *证书链
* ClientKeyExchange,RSA PreMasterSecret,TLSv1 新I / O工作人员#2,WRITE:TLSv1握手,长度= 141
...
新I / O工作人员#2,WRITE:TLSv1更改密码规范,长度= 1 * 已完成 verify_data:{95,232,182,57,141,10,130,36,152,210,86,173}
新I / O工作人员#2,WRITE:TLSv1握手,长度= 48 新的I / O工作者#2,等待close_notify或alert:状态1 新I / O工作者#2,READ:TLSv1警报,长度= 2 新I / O工作人员#2,RECV TLSv1警告:致命,bad_certificate %%无效:[Session-1,TLS_RSA_WITH_AES_128_CBC_SHA] 新的I / O工作者#2,名为closeSocket() 新的I / O worker#2,等待关闭时出现异常javax.net.ssl.SSLHandshakeException:收到致命警报:bad_certificate 新的I / O工作者#2,处理异常:javax.net.ssl.SSLHandshakeException:收到致命警报:bad_certificate
是否有任何有此经验的人可以帮助我?