TLS 的 Bouncy Castle 配置
Bouncy Castle Configuration for TLS
我正在使用使用 java 进行 TLS 通信的测试应用程序。标准 Oracle java 安装在我的系统中。
我需要使用标准 Java 不支持的 TLS_DHE_RSA_WITH_AES_128_CCM
密码套件,所以很多人建议使用 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 的步骤吗?
不,因为您不需要首先将 JCE 提供程序添加到类路径中,因为它不包含在标准的 Bouncy Castle (BC) 提供程序中 bctls-$version.jar
。还需要注册 TLS / JSSE 提供程序:
Security.insertProviderAt(new rg.bouncycastle.jsse.provider.BouncyCastleJsseProviderBouncyCastleJsseProvider(), 1);
或以任何其他方式注册,例如通过将其包含在 java.security
文件中。
由于您可能希望将提供程序用于所有(如果不是大部分)TLS 需求,因此将其添加到最高优先级是有意义的。请注意,JSSE 提供程序不为 Cipher
或 Signature
提供 RSA 或 AES 等实现,因此它不应该妨碍。
请注意,Sun 的 RSA 和 AES 实现仍可由 Bouncy Castle JSSE 提供程序使用,并且由于这些可能经过更好的测试并且可能使用硬件加速,因此您可能需要确保 BouncyCastleProvider
使用 addProvider
作为列表中的最后一个提供商加载。提供程序可能确实是必需的,因为标准 Java 安装提供的默认提供程序似乎缺少 CCM 支持。
如果您想知道:JSSE 是 Java 安全套接字扩展。
我正在使用使用 java 进行 TLS 通信的测试应用程序。标准 Oracle java 安装在我的系统中。
我需要使用标准 Java 不支持的 TLS_DHE_RSA_WITH_AES_128_CCM
密码套件,所以很多人建议使用 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 的步骤吗?
不,因为您不需要首先将 JCE 提供程序添加到类路径中,因为它不包含在标准的 Bouncy Castle (BC) 提供程序中 bctls-$version.jar
。还需要注册 TLS / JSSE 提供程序:
Security.insertProviderAt(new rg.bouncycastle.jsse.provider.BouncyCastleJsseProviderBouncyCastleJsseProvider(), 1);
或以任何其他方式注册,例如通过将其包含在 java.security
文件中。
由于您可能希望将提供程序用于所有(如果不是大部分)TLS 需求,因此将其添加到最高优先级是有意义的。请注意,JSSE 提供程序不为 Cipher
或 Signature
提供 RSA 或 AES 等实现,因此它不应该妨碍。
请注意,Sun 的 RSA 和 AES 实现仍可由 Bouncy Castle JSSE 提供程序使用,并且由于这些可能经过更好的测试并且可能使用硬件加速,因此您可能需要确保 BouncyCastleProvider
使用 addProvider
作为列表中的最后一个提供商加载。提供程序可能确实是必需的,因为标准 Java 安装提供的默认提供程序似乎缺少 CCM 支持。
如果您想知道:JSSE 是 Java 安全套接字扩展。