1

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

我设置了一个 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 New I/O worker #2, WRITE: TLSv1 Handshake, length = 141

...

新 I/O 工作者 #2,写入:TLSv1 更改密码规范,长度 = 1 *完成的验证数据:{ 95、232、182、57、141、10、130、36、152、210、86、173 }


新 I/O 工作器 #2,写入:TLSv1 握手,长度 = 48 新 I/O 工作器 #2,等待 close_notify 或警报:状态 1 新 I/O 工作器 #2,读取:TLSv1 警报,长度 = 2 新 I /O worker #2, RECV TLSv1 ALERT: fatal, bad_certificate %% Invalidated: [Session-1, TLS_RSA_WITH_AES_128_CBC_SHA] New I/O worker #2, called closeSocket() New I/O worker #2, Exception while waiting for close javax .net.ssl.SSLHandshakeException:收到致命警报:bad_certificate 新 I/O 工作者 #2,处理异常:javax.net.ssl.SSLHandshakeException:收到致命警报:bad_certificate

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

4

0 回答 0