我为这个问题真正的新手质量道歉 .

我有一个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 Cert Types: RSA, DSS, ECDSA Cert Authorities:** 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或警报:状态1新I / O工作者#2,READ:TLSv1警报,长度= 2新I / O worker#2,RECV TLSv1 ALERT:fatal,bad_certificate %% Invalidated:[Session-1,TLS_RSA_WITH_AES_128_CBC_SHA]新I / O worker#2,名为closeSocket()新I / O worker#2,异常等待关闭javax .net.ssl.SSLHandshakeException:收到致命警报:bad_certificate新I / O worker#2,处理异常:javax.net.ssl.SSLHandshakeException:收到致命警报:bad_certificate

是否有人有这方面的经验可以帮助我?