【问题标题】:Bouncy Castle Configuration for TLSTLS 的 Bouncy Castle 配置
【发布时间】:2023-02-09 04:16:22
【问题描述】:

我正在使用一个使用 java 进行 TLS 通信的测试应用程序。我的系统中安装了标准 Oracle java。

我需要使用 TLS_DHE_RSA_WITH_AES_128_CCM 密码套件,标准 Java 不支持它,所以很多人建议使用 Bouncy Castle。我下载并复制了 bcprov-ext-jdk18on-171.jar$JAVA_HOME/lib 文件夹。 此外,更新了java.security 文件以将 Bouncy Castle 包含在提供商列表中,如下所示:

security.provider.4=org.bouncycastle.jce.provider.BouncyCastleProvider

我仍然无法让TLS_DHE_RSA_WITH_AES_128_CCM 工作。

我执行的步骤是否充分且正确?有人可以建议安装和配置 Bouncy Castle 的步骤吗?

【问题讨论】:

    标签: java ssl encryption bouncycastle


    【解决方案1】:

    BouncyCastleProviderCipher 和其他类的可用算法中添加了 CCM 操作模式下的 AES 等加密算法。由于 CCM 默认不包含在 Java 中,您需要通过代码(即 Security.addProvider(new BouncyCastleProvider))注册此提供程序或将其添加到 java.security 文件中(如问题中所示)。您可能希望将它添加到提供程序列表的末尾,因为 Oracle 提供程序的算法通常经过更好的测试并且可以使用硬件加速来加速。

    但是,BouncyCastleProvider 确实不是包含 TLS 协议的实现。您需要为此注册 BouncyCastleJsseProvider。这是必需的,因为 Java TLS 实现不会神奇地知道如何在 Bouncy Castle 中使用 CCM 实现。 JSSE 是 Java 安全套接字扩展的缩写。

    您可以在提供程序的开头添加该提供程序,以便您确定该提供程序用于实现 TLS:

    Security.insertProviderAt(new rg.bouncycastle.jsse.provider.BouncyCastleJsseProvider(), 1);
    

    也可以直接在java.security文件中注册。

    请注意,JSSE 提供程序不为 CipherSignature 提供诸如 RSA 或 AES 之类的实现,因此它不应该妨碍。

    【讨论】:

    • 或者在java.security文件中配置org.bouncycastle.jsse.provider.BouncyCastleJsseProvider,但是无论哪种情况,您都需要bctls-$version.jar 此外到 bcprov,因为我很确定你需要 JCE 提供者来获取 CCM 原语。
    • @dave_thompson_085 是的,对。我可能在搜索该 .jar 文件时输入错误,因为我查看了下载页面。
    • (1) 下载并添加文件 bcprov-$version.jar 和 bctls-$version.jar 到 %JAVA_HOME%libext 路径。 (2) 将 java.security 文件更新为 security.provider.N=org.bouncycastle.jce.provider.BouncyCastleJsseProvider (3) 将 java.security 文件更新为 security.provider.(N+1)=org.bouncycastle.jsse.provider .BouncyCastleJsseProvider 该工具现在给出以下错误:线程“主”java.lang.NoClassDefFoundError 中的异常:org/bouncycastle/asn1/eac/EACObjectIdentifiers at org.bouncycastle.tls.TlsUtils.createCertSigAlgOIDs(未知来源)所以添加了 bcutil-$version .jar 也是文件夹。
    • 非常感谢@dave_thompson_085 和 Maarten Bodewes
    猜你喜欢
    • 1970-01-01
    • 2012-03-19
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多