首页 > 解决方案 > javax.net.ssl.SSLHandshakeException:com.ibm.jsse2.util.h:PKIX 路径构建失败

问题描述

在 Linux 中使用 IIB 10.19。我开发了一个应用程序来通过 HTTP 请求节点调用 HTTPS REST URL。在 HTTP 请求节点的 SSL 选项卡中,当前的“协议”是 TLS。在“允许的 SSL 密码”和“SSL 客户端身份验证密钥别名”字段中,没有写入任何内容。“启用 SSL 证书主机名检查”和“启用证书吊销列表检查”均未选中。

如果没有证书安装,它就无法工作。因此,我按照以下步骤创建密钥库并将它们关联到集成服务器级别,其中 UFISBRK 是我的节点,TESTEG 是服务器:

keytool -genkey -alias localhost -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -keypass welcome101 -keystore /home/mqm/TESTEG/Certificates/identity.jks -validity 365

keytool -export -alias localhost -file /home/mqm/TESTEG/Certificates/localhost.cer -keystore /home/mqm/TESTEG/Certificates/identity.jks -storepass welcome101

keytool -import -alias localhost -file /home/mqm/TESTEG/Certificates/localhost.cer -keystore /home/mqm/TESTEG/Certificates/trust.jks -storepass welcome101

keytool -import -trustcacerts -alias thrifty -file /home/mqm/TESTEG/Certificates/Thrifty.cer -keystore /home/mqm/TESTEG/Certificates/trust.jks -storepass welcome101

keytool -list -keystore /home/mqm/TESTEG/Certificates/identity.jks

keytool -list -keystore /home/mqm/TESTEG/Certificates/trust.jks

chmod 777 /home/mqm/TESTEG/Certificates/identity.jks

chmod 777 /home/mqm/TESTEG/Certificates/trust.jks


mqsichangeproperties UFISBRK -e TESTEG -o ComIbmJVMManager -n keystoreFile -v /home/mqm/TESTEG/Certificates/identity.jks

mqsichangeproperties UFISBRK -e TESTEG -o ComIbmJVMManager -n keystoreType -v JKS

mqsichangeproperties UFISBRK -e TESTEG -o ComIbmJVMManager -n keystorePass -v TESTEG::keystorePass

mqsisetdbparms UFISBRK -n TESTEG::keystorePass -u na -p welcome101



mqsichangeproperties UFISBRK -e TESTEG -o ComIbmJVMManager -n truststoreFile -v /home/mqm/TESTEG/Certificates/trust.jks

mqsichangeproperties UFISBRK -e TESTEG -o ComIbmJVMManager -n truststoreType -v JKS

mqsichangeproperties UFISBRK -e TESTEG -o ComIbmJVMManager -n truststorePass -v TESTEG::truststorePass

mqsisetdbparms UFISBRK -n TESTEG::truststorePass -u na -p welcome101


mqsireportproperties UFISBRK -o ComIbmJVMManager -a -e TESTEG

mqsistop UFISBRK

mqsistart UFISBRK


但是,它仍然无法正常工作。给出以下错误:

<Text>javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.h: PKIX path building failed: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is: 
    java.security.cert.CertPathValidatorException: The certificate issued by OU=Go Daddy Class 2 Certification Authority, O="The Go Daddy Group, Inc.", C=US is not trusted; internal cause is: 
    java.security.cert.CertPathValidatorException: Certificate chaining error</Text>

我加载的证书和错误中提到的证书是不同的。另外,我已经检查了这个 Go Daddy 组证书。它不在我创建的信任库中。它位于 /home/mqm/acdm/java/jdk1.8.0_131/jre/lib/security/cacerts 路径中的默认信任库中。

我不知道,新创建的信任库是如何被忽略的。有什么我做错了吗?该怎么做才能解决问题?

--------------这部分是后面添加的,broker重启后的当前错误日志--------------

( ['MQROOT' : 0x7fb94129e4b0]
  (0x01000000:Name):RecoverableException = (
    (0x03000000:NameValue):File                 = '/build/slot3/S1000_P/src/DataFlowEngine/MessageServices/ImbDataFlowNode.cpp' (CHARACTER)
    (0x03000000:NameValue):Line                 = 1251 (INTEGER)
    (0x03000000:NameValue):Function             = 'ImbDataFlowNode::createExceptionList' (CHARACTER)
    (0x03000000:NameValue):Type                 = 'ComIbmWSRequestNode' (CHARACTER)
    (0x03000000:NameValue):Name                 = 'ThriftyService_MF#FCMComposite_1_3' (CHARACTER)
    (0x03000000:NameValue):Label                = 'ThriftyService_MF.HTTP Request' (CHARACTER)
    (0x03000000:NameValue):Catalog              = 'BIPmsgs' (CHARACTER)
    (0x03000000:NameValue):Severity             = 3 (INTEGER)
    (0x03000000:NameValue):Number               = 2230 (INTEGER)
    (0x03000000:NameValue):Text                 = 'Node throwing exception' (CHARACTER)
    (0x01000000:Name     ):Insert               = (
      (0x03000000:NameValue):Type = 14 (INTEGER)
      (0x03000000:NameValue):Text = 'ThriftyService_MF.HTTP Request' (CHARACTER)
    )
    (0x01000000:Name     ):RecoverableException = (
      (0x03000000:NameValue):File                 = '/build/slot3/S1000_P/src/WebServices/WSLibrary/ImbWSRequestNode.cpp' (CHARACTER)
      (0x03000000:NameValue):Line                 = 1147 (INTEGER)
      (0x03000000:NameValue):Function             = 'ImbWSRequestNode::evaluate' (CHARACTER)
      (0x03000000:NameValue):Type                 = '' (CHARACTER)
      (0x03000000:NameValue):Name                 = '' (CHARACTER)
      (0x03000000:NameValue):Label                = '' (CHARACTER)
      (0x03000000:NameValue):Catalog              = 'BIPmsgs' (CHARACTER)
      (0x03000000:NameValue):Severity             = 3 (INTEGER)
      (0x03000000:NameValue):Number               = 3162 (INTEGER)
      (0x03000000:NameValue):Text                 = 'WebService Request Exception' (CHARACTER)
      (0x01000000:Name     ):Insert               = (
        (0x03000000:NameValue):Type = 12 (INTEGER)
        (0x03000000:NameValue):Text = '436f6e74656e742d547970653a20746578742f786d6c3b20636861727365743d7574662d380d0a486f73743a206c6f67696e2e746872696674797561652e61650d0a534f4150416374696f6e3a2022220d0a436f6e6e656374696f6e3a204b6565702d416c6976650d0a0d0a' (CHARACTER)
      )
      (0x01000000:Name     ):Insert               = (
        (0x03000000:NameValue):Type = 12 (INTEGER)
        (0x03000000:NameValue):Text = '' (CHARACTER)
      )
      (0x01000000:Name     ):Insert               = (
        (0x03000000:NameValue):Type = 5 (INTEGER)
        (0x03000000:NameValue):Text = '' (CHARACTER)
      )
      (0x01000000:Name     ):Insert               = (
        (0x03000000:NameValue):Type = 5 (INTEGER)
        (0x03000000:NameValue):Text = '' (CHARACTER)
      )
      (0x01000000:Name     ):Insert               = (
        (0x03000000:NameValue):Type = 5 (INTEGER)
        (0x03000000:NameValue):Text = 'GET /ThriftyAUHAirport/ThriftyAUHAirport.svc/ChargeCodesThrifty?Key=M28%4090R%40i%2A%40l24%2AE%2ASp3%406OT%40hsw9se36r HTTP/1.1
' (CHARACTER)
      )
      (0x01000000:Name     ):RecoverableException = (
        (0x03000000:NameValue):File            = '/build/slot3/S1000_P/src/WebServices/WSLibrary/ImbWSRequest.cpp' (CHARACTER)
        (0x03000000:NameValue):Line            = 655 (INTEGER)
        (0x03000000:NameValue):Function        = 'ImbWSRequest::makeWSRequest' (CHARACTER)
        (0x03000000:NameValue):Type            = '' (CHARACTER)
        (0x03000000:NameValue):Name            = '' (CHARACTER)
        (0x03000000:NameValue):Label           = '' (CHARACTER)
        (0x03000000:NameValue):Catalog         = 'BIPmsgs' (CHARACTER)
        (0x03000000:NameValue):Severity        = 3 (INTEGER)
        (0x03000000:NameValue):Number          = 3152 (INTEGER)
        (0x03000000:NameValue):Text            = 'A Web Service request has detected a SOCKET error whilst invoking a web service located at host &1, on port &2, on path &3.' (CHARACTER)
        (0x01000000:Name     ):Insert          = (
          (0x03000000:NameValue):Type = 5 (INTEGER)
          (0x03000000:NameValue):Text = 'login.thriftyuae.ae' (CHARACTER)
        )
        (0x01000000:Name     ):Insert          = (
          (0x03000000:NameValue):Type = 2 (INTEGER)
          (0x03000000:NameValue):Text = '443' (CHARACTER)
        )
        (0x01000000:Name     ):Insert          = (
          (0x03000000:NameValue):Type = 5 (INTEGER)
          (0x03000000:NameValue):Text = '/ThriftyAUHAirport/ThriftyAUHAirport.svc/ChargeCodesThrifty' (CHARACTER)
        )
        (0x01000000:Name     ):SocketException = (
          (0x03000000:NameValue):File     = '/build/slot3/S1000_P/src/WebServices/WSLibrary/ImbSocket.cpp' (CHARACTER)
          (0x03000000:NameValue):Line     = 1289 (INTEGER)
          (0x03000000:NameValue):Function = 'ImbSocketJNIManager::handleGeneralJavaException' (CHARACTER)
          (0x03000000:NameValue):Type     = '' (CHARACTER)
          (0x03000000:NameValue):Name     = '' (CHARACTER)
          (0x03000000:NameValue):Label    = '' (CHARACTER)
          (0x03000000:NameValue):Catalog  = 'BIPmsgs' (CHARACTER)
          (0x03000000:NameValue):Severity = 3 (INTEGER)
          (0x03000000:NameValue):Number   = 3165 (INTEGER)
          (0x03000000:NameValue):Text     = 'An error occurred whilst performing an SSL socket operation' (CHARACTER)
          (0x01000000:Name     ):Insert   = (
            (0x03000000:NameValue):Type = 5 (INTEGER)
            (0x03000000:NameValue):Text = 'connect' (CHARACTER)
          )
          (0x01000000:Name     ):Insert   = (
            (0x03000000:NameValue):Type = 5 (INTEGER)
            (0x03000000:NameValue):Text = 'javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.h: PKIX path building failed: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is: 
    java.security.cert.CertPathValidatorException: The certificate issued by CN=USERTrust RSA Certification Authority, O=The USERTRUST Network, L=Jersey City, ST=New Jersey, C=US is not trusted; internal cause is: 
    java.security.cert.CertPathValidatorException: Certificate chaining error' (CHARACTER)
          )
        )
      )
    )
  )

-------------这部分是后面添加的,broker重启后的当前错误日志------------------------- ---

标签: httpsssl-certificateibm-integration-bus

解决方案


推荐阅读