我为这个问题的真正新手质量道歉。
我设置了一个 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
有没有这方面经验的人可以帮助我?