gpt4 book ai didi

java.security.cert.CertificateException : Certificate data canot be processed

转载 作者:太空宇宙 更新时间:2023-11-03 14:54:21 26 4
gpt4 key购买 nike

我需要一些帮助来修复项目中的证书异常。我收到 java.security.cert.CertificateException: Certificate data canot be processed 以下是客户端应用程序的环境详细信息:

  • 我的客户端应用程序部署在 IBM WebsphereApplicationServer(WAS)6.0 上
  • 使用内置于 WAS 6.0 的 IBM JDK 1.4.2

第 3 方 Web 服务提供商最近已升级到 SHA-256。通过上述客户端设置,我收到握手异常。我们尝试使用 Bouncy CaSTLe jar 来支持 SHA-256。在此之后,我在进行 Web 服务调用时看到以下异常:

 WebContainer : 0, SEND TLSv1 ALERT:  fatal, description = certificate_unknown                               
WebContainer : 0, WRITE: TLSv1 Alert, length = 2
WebContainer : 0, called closeSocket()
WebContainer : 0, handling exception: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: Certificate data canot be processed
Exception javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: Certificate data canot be processed
Finalizer, called close()
Finalizer, called closeInternal(true)

我拥有的 keystore 和信任库来自默认的 JDK 版本:

keyStore is: /usr/local/opt/was/was60/java/jre/lib/security/cacerts   
keyStore type is : jks
init keystore
trustStore is: /usr/local/opt/was/was60/java/jre/lib/security/cacerts
trustStore type is : jks

这里还有一些日志:

SystemErrR AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: Certificate data canot be processed
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: Certificate data canot be processed
at com.ibm.jsse2.bx.a(bx.java:114)
at com.ibm.jsse2.by.a(by.java:24)
at com.ibm.jsse2.by.a(by.java:444)
at com.ibm.jsse2.w.a(w.java:281)
at com.ibm.jsse2.w.a(w.java:105)
at com.ibm.jsse2.v.a(v.java:25)
at com.ibm.jsse2.by.a(by.java:272)
at com.ibm.jsse2.by.m(by.java:198)
at com.ibm.jsse2.by.startHandshake(by.java:68)
at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:186)
at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191)
at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at com.cingular.csi.CSI.Namespaces.v94.wsdl.CingularWirelessCSI_wsdl.InquireWirelineServiceAppointmentReservationsSoapHttpBindingStub.inquireWireline

最后,还有几点需要注意:

  • WAS 和 JDK 都无法升级,应用稳定。

  • 使用的 SocketFactory 是:com.ibm.jsse2.SSLSocketFactoryImpl

  • 尝试了 javax.net.SSLSocketFactoryImpl。它在 SocketContext 本身失败。

  • 尝试使用 key 工具将第三方服务器证书添加到我的信任库 (cacerts)。也没用。

  • 还尝试分别使用 DummyClientKeyFile.jks 和 DummyClientTrustFile.jks 作为 Keystore 和 truststore 文件,而不是 JDK 的 cacerts,但没有成功。

两周多以来我一直被这个问题困扰着。感谢任何帮助。

最佳答案

IBM 的 1.4.2 JVM 不支持使用 SHA256 密码签名的证书。当我们遇到这个问题时,我提出了一个 PMR 来确认这一点,回复是:

"You will need to revert to using older style ciphers or upgrade. We began supporting SHA 256 from Java 1.5 onward. It's not possible to back port the function."

如果您发现提到 Java 1.4.2 支持此类证书,请检查这与哪个供应商的 JVM 有关 - 可能是 Oracle,因为他们的 1.4.2 JVM 确实支持 SHA256 签名证书。

更新

解决此问题的选项是:

  1. 升级到 IBM 的 1.5 JVM(或更好!)。如果您使用 Java 1.4.2 作为 IBM 产品的一部分,例如WebSphere Application Server (v6) 那么您也需要对其进行升级。
  2. 如果您不依赖 IBM 但必须使用 1.4.2,请尝试 Oracle 的 1.4.2 JVM
  3. 使用正向代理。这里涉及到连接代理,代理终止 SSL 连接然后打开第二个连接到最终目的地。代理成为中间人,所以这里有一些安全问题需要考虑(例如 PCI DSS 合规性如果您要发送支付卡数据)。
  4. #3 的变体涉及让防火墙透明地执行此操作。

关于java.security.cert.CertificateException : Certificate data canot be processed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31085565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com