【问题标题】:JAVA Webservice certificate ConfigurationJAVA Webservice证书配置
【发布时间】:2016-08-09 12:31:15
【问题描述】:

我对为 web 服务配置证书非常陌生。目前我使用weblogic serverJROCKET Jre。我正在尝试调用外部网络服务。为此,我在 jre/lib/security cacerts 文件中添加了所有提供的证书。我最终收到了错误消息 -

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

请帮帮我。

【问题讨论】:

    标签: java web-services ssl-certificate x509certificate


    【解决方案1】:

    可信证书列表的加载引发了证书 解析异常 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) sha256WithRSAEncryption(11)“。

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

    来自 CN=Entrust 根证书颁发机构的证书 – G2,OU=(c) 2009 Entrust, Inc. – 仅供授权使用,OU=见 www.entrust.net/legal-terms,O=Entrust, Inc.,C=US 使用 JDK不支持的SHA256WithRSAEncryption!

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

    根本原因

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

    1. 默认情况下,Java Cryptography Extension (JCE) 附带 JDK,仅实施有限强度的管辖政策 文件。
    2. 保存这个和其他的 JDK 的默认信任库 证书可在JAVA_HOME/jre/lib/security/cacerts 中找到。
    3. 12c 之前的 WebLogic Server 版本带有 Certicom SSL 执行。 Certicom 实施将不会更新 因为所需的 JDK 已经随标准 SunJSSE 实施。

    问题

    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)

    如果您使用 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

    【讨论】:

    • 感谢天行者。单独添加 JAVA_OPTIONS 解决了问题
    猜你喜欢
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 2012-04-27
    • 2023-02-23
    • 2013-08-16
    • 2020-04-24
    相关资源
    最近更新 更多