我有一个纯Java应用程序,目前使用基于.jks的密钥和信任存储。据我了解,Bluemix下的SSL协议处理是在网络侧使用单个端口和外卡和域识别的通配符证书完成的。我关心的是使用信任存储,我用它来添加可信伙伴节点的证书,例如身份提供者。是否有可用于安装可信证书的高级别上传工具?有了这个,Java可以将其功能限制为一个非常基本的HTTP实现,由云及其在动态端口发生的HTTP到HTTPS转换机制进行外部辅助。
将可信服务器证书上传并激活到我的应用程序的最佳方法是什么?
感谢@david发送评论。
该应用程序是一个纯Java包,它集成了一个嵌入式Web容器,并处理一个GUI页面以启动和Oauth 2.o相关的身份验证流程。它的设计类似于cURL序列,因此它基本上是一个Web服务。为了保持精简,我的目的是避免Web应用程序服务器的复杂性。 SSL可以由代码本身驱动,因为我设法将密钥和信任存储打包到cf push包中,使用Maven包资源扩展命令,该命令能够通过其扩展名复制一组平面文件,如* .jks。测试表明Java代码能够读取它。我的疑问是关于默认的SSL处理,它将SSL构造转移到Bluemix代理网关,基本上通过基本HTTP协议与应用程序连接(问题:代理只在传入路径上行动吗?)。
我没有找到有关传出SSL流的文档或描述如何存储可以帮助代理的可信证书的机制。密钥库还需要一个映射* .mybluemix.net域通配符的证书,还是需要一个自签名证书?
关于错误:javax.net.ssl.SSLPeerUnverifiedException:peer not authenticated
我已经用JAVA_OPTS =" -Djavax.net.debug = ssl"隔离了SSL问题。在环境变量中配置并重复应用程序" push"。跟踪显示有关无限制JCE强度的问题,即调用节点(IdP)和OpenJDK Java 8之间的不兼容性。 显然我的代码能够生成SSL思想使用本地密钥库。我将打开一份关于加密问题的新报告,并会询问社区如何修补它。
感谢@david提供支持,以澄清有关Bluemix和SSL代理支持以及信任证书使用的详细信息。
答案 0 :(得分:2)
我没有意识到上传工具,但假设您正在使用Liberty,那么当您将密钥库推送到Bluemix(通常位于资源/安全目录中)时,您应该能够将密钥库与服务器目录打包在一起。 。您必须按照here所述在server.xml中配置keystore元素。每次需要修改密钥库(即添加新证书)时,您都必须重新推送应用程序,但这可能不会经常取决于您的用例。