Bluemix - Java 应用程序 - 如何为 Unlimited JCE Strength 打补丁?

Bluemix - Java Application - How to patch for Unlimited JCE Strength?

我的应用程序是一个纯 Java 包,它集成了一个嵌入式 Web 容器并处理 Oauth 2.0 身份验证流程。

运行 跟踪 我已经通过使用 JAVA_OPTS="-Djavax.net.debug=ssl" 在环境变量中配置并重复应用程序来隔离 SSL 问题 "push" 激活跟踪。它显示了一个关于不受限制的 JCE 强度的问题。查看消息:

Error log: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
Trace log: handling exception: javax.net.ssl.SSLKeyException: RSA premaster secret error

这似乎是调用节点 (IdP) 与 OpenJDK 之间的不兼容问题 Java 8.

是否可以向 Java build-pack 添加补丁以激活 Unlimited JCE 强度? cf cli 命令层或 Bluemix 仪表板控制台设置是否支持此补丁,或者它是否需要打包上传包含更新的 Java 安全目录的新图像?补丁的结构是什么(例如通过 Maven 包)。这是我当前的推送命令:

cf push redoauth2 -p ./target/red-oauth-1.0-SNAPSHOT-jar-with-dependencies.jar -m 200M -t 180

通过使用差异化 Java build-pack 找到解决方案,其中已经包含无限 JCE 设置的补丁。这是添加 -b 参数的 cf push 命令,它解决了这个问题。

cf push redoauth2 -p ./target/red-oauth-1.0-SNAPSHOT-jar-with-dependencies.jar -m 200M -t 180 -b https://github.com/cloudfoundry/java-buildpack

如果您推送服务器目录,Bluemix 支持覆盖 JRE。

假设您要推送一个名为 defaultServer 的目录,请创建以下目录:

defaultServer/resources/.java-overlay/.java/jre/lib/security

从 IBM 下载 Java 加密扩展 (JCE) 无限强度策略 JAR 文件并将它们放在创建的覆盖目录中。

推送目录使用:

$ cf push <yourappname> -p defaultServer

这些 JAR 文件将覆盖 Java 运行时中的默认策略 JARS。

更新

自 2017 年 8 月 14 日起,IBM Cloud(以前称为 BlueMix)Liberty buildpack 现在包括 Java 加密扩展 (JCE) 无限强度管辖策略文件。

https://console.bluemix.net/docs/runtimes/liberty/updates.html#latest_updates