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