Bluemix - Java应用程序 - 如何修补无限JCE强度?

时间:2016-01-08 12:47:38

标签: java ssl ibm-cloud jce

我的应用程序是一个纯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

2 个答案:

答案 0 :(得分:2)

使用差异化的Java构建包找到了一个解决方案,该构建包已经包含了无限制JCE设置的补丁。这是cf push命令添加-b参数,它修复了这种情况。

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

答案 1 :(得分:0)

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

假设您正在推送名为defaultServer的目录,请创建以下目录:

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

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

使用以下方式推送目录:

$ cf push <yourappname> -p defaultServer

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

<强>更新

截至2017年8月14日,IBM Cloud(以前称为BlueMix)Liberty buildpack现在包含Java Cryptography Extension(JCE)Unlimited Strength Jurisdiction Policy Files。

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