Bluemix - 如何将证书添加到信任库

Bluemix - How to add a Certificate to a Trust Store

我有一个纯 Java 应用程序,目前使用基于 .jks 的密钥和信任库。据我了解,Bluemix 下的 SSL 协议处理是在网络端使用单个端口和用于主机和域标识的通配符证书完成的。我关心的是关于信任库的使用,我用它来添加可信合作伙伴节点的证书,例如身份提供者。是否有可用的高级上传工具来帮助安装受信任的证书?有了它,Java 可以将其功能限制在非常基本的 HTTP 实现上,由云及其在动态端口发生的 HTTP 到 HTTPS 转换机制的外部协助。

将受信任的服务器证书上传并激活到我的应用程序中的最佳方式是什么?

感谢@david 发送评论。

该应用程序是一个纯 Java 包,它集成了一个嵌入式 Web 容器并处理一个单一的 GUI 页面以启动和 Oauth 2.o 相关的身份验证流程。它的设计类似于 cURL 序列,因此它基本上是一个 Web 服务。为了保持精简,我的意图是避免 Web 应用程序服务器的复杂性。 SSL 可以由代码本身驱动,因为我设法使用 Maven 包资源扩展命令将密钥和信任库打包到 cf 推送包中,该命令能够通过其扩展名复制一组平面文件,例如*.jks。测试表明 Java 代码能够读取它。我怀疑默认的 SSL 处理将 SSL 构造传输到 Bluemix 代理网关,基本上通过基本的 HTTP 协议与应用程序连接(问题:代理是否仅在传入路径上起作用?)。

我没有找到关于传出 SSL 流程或描述如何存储可协助代理的可信证书的机制的文档。此外,密钥库是否需要映射 *.mybluemix.net 域通配符的证书,还是需要自签名证书?

关于错误:javax.net.ssl.SSLPeerUnverifiedException:对等端未通过身份验证

我已经通过在环境变量中配置的 JAVA_OPTS="-Djavax.net.debug=ssl" 隔离了 SSL 问题并重复了应用程序 "push"。跟踪显示了一个关于不受限制的 JCE stregth 的问题,调用节点 (IdP) 和 OpenJDK 之间的不兼容性 Java 8。 显然我的代码能够通过使用本地密钥库生成 SSL。我将打开一份关于密码学问题的新报告,并询问社区如何修补它。

感谢@david 提供支持,澄清有关 Bluemix 和 SSL 代理支持以及信任证书使用的详细信息。

据我所知没有上传工具,但假设您使用的是 Liberty,当您将密钥库推送到 Bluemix(通常在 resources/security 目录)。您必须按照 here 所述在 server.xml 中配置密钥库元素。每次您需要修改密钥库(即添加新证书)时,您都必须 re-push 您的应用程序,但这可能不会经常发生,具体取决于您的用例。