JAVA Webservice证书配置

时间:2016-08-09 12:31:16

标签: java web-services ssl-certificate x509certificate

我很擅长为webservice配置证书。目前,我将weblogic serverJROCKET Jre一起使用。我想调用外部Web服务。我已经在jre / lib / security cacerts文件中添加了所有提供的证书。我最终收到错误消息 -

  

“加载可信证书列表会引发证书   解析异常PKIX:AlgorithmIdentifier中不支持的OID   对象:1.2.840.113549.1.1.11“。

请帮助我。

1 个答案:

答案 0 :(得分:0)

  

加载可信证书列表会引发证书   解析异常PKIX:AlgorithmIdentifier中不支持的OID   对象:1.2.840.113549.1.1.11

这看起来很奇怪,许多人忽略了这些错误消息。但是,如果您的策略仅显示真实的错误消息,那么您很快就会寻找解决方案。互联网充满了可能的解决方案。有些人建议从JDK信任库中删除证书,有些人建议使用不同的信任库。但这是最好的解决方案,副作用是什么?

主要文章

我们的解决方案首先要了解错误消息。这是再次。

  

忽略可信CA证书“CN = Entrust Root Certification   授权 - G2,OU =(c)2009 Entrust,Inc。 - 授权使用   只有,OU =见www.entrust.net/legal-terms,O=Entrust,Inc。,C = US“。该   加载可信证书列表引发了证书解析   异常PKIX:AlgorithmIdentifier对象中不支持的OID:   1.2.840.113549.1.1.11。

第一句是结果,第二句解释原因。看看原因,我们很快找到“证书解析异常”。但“PKIX: Unsupported OID in the AlgorithmIdentifier object: 1.2.840.113549.1.1.11”告诉我们什么呢?

  • PKIX代表公钥基础设施(X.509)。 X.509是 用于导出,交换和导入SSL证书的标准。
  • OID代表对象标识符。对象标识符是全局的 独特的,有层次的组织。此层次结构由以下维护 每个国家的标准机构。每个标准机构都是 负责特定分支,可以定义和分配条目 进入等级制度。

使用此背景信息,我们可以在OID存储库中查找数字1.2.840.113549.1.1.11(参见参考资料中的链接)并获得此结果“iso(1)member-body(2)us(840)rsadsi (113549)pkcs(1)pkcs-1(1)sha256与RSAEncryption(11)“。

结合第一句中的证书信息和OID查找中的信息,我们得到以下结果:

  

来自CN = Entrust Root Certification Authority的证书 -   G2,OU =(c)2009 Entrust,Inc。 - 仅限授权使用,OU = See   www.entrust.net/legal-terms,O=Entrust,Inc。,C =美国使用   SHA256与JDK不支持的RSAE加密!

您可能会看到有关其他证书中使用的类似或不同加密算法的更多消息。

根本原因

这些因素导致此(及类似)错误消息:

  1. 默认情况下,Java Cryptography Extension(JCE)附带 JDK仅实施有限的强制管辖政策 文件。
  2. 包含此内容和其他内容的JDK的默认信任库 证书可以在JAVA_HOME/jre/lib/security/cacerts
  3. 中找到
  4. 12c之前的WebLogic Server版本附带Certicom SSL 实现。 Certicom实施将不会更新 因为所需的JDK已经附带标准的SunJSSE 实施
  5. 问题

    Certicom实现与许多SSL证书完美配合,但不支持更新更强的算法。仅当您不需要安装第三方证书(例如,来自众所周知的证书颁发机构)时,才能从默认信任库或使用新信任库中删除证书。

    解决方案

    要删除这些错误消息并支持较新的SSL证书,我们必须执行以下步骤:

    1. 使用Java Cryptography升级管辖权政策文件 扩展(JCE)无限强度管辖政策文件。您 可以下载适合的Unlimites Strength Jurisdication文件 来自Oracle技术网的JDK版本(参见 参考资料)。按照随附的安装说明进行操作 分布。
    2. 在WebLogic Server中启用SunJSSE支持

       - Login to Weblogic console
       - Go to [Select your Server] -> SSL -> Advance 
       - Set “Enable JSSE” to true.
      
    3. 完全重启域名(包括NodeManager)
    4. 如果您使用WLST脚本启动域:

              CONFIG_JVM_ARGS='-Dweblogic.ssl.JSSEEnabled=true -Dweblogic.security.SSL.enableJSSE=true'
      

      如果使用脚本startWebLogic.sh,startManagedServer.sh或startNodeManager.sh启动域:

              JAVA_OPTIONS='-Dweblogic.ssl.JSSEEnabled=true -Dweblogic.security.SSL.enableJSSE=true'
      

      您的Java和WebLogic环境现在已准备好支持更新的SSL证书!

      资源链接:

      1. Improve SSL Support for Your WebLogic Domains by Olaf Heimburger
      2. Improve SSL Support for Your WebLogic Domains