信任库和Java版本

我本周的调试比赛恰巧是在IBM AIX系统上进行的。 我们从Java 1.4版升级到6版时发生了错误(我承认这是一个很大的进步)。 突然,旧的应用程序停止工作,并且其日志显示NoSuchAlgorithmException

有点上下文:当Java应用程序必须通过HTTP通过SSL连接到主机时,它们必须信任该主机-与使用HTTPS浏览站点时相同。 如果站点可以提供SSL证书,通过将其追溯到信任机构(Verisign等)来证明其可信赖性,那么一切都很好。 但是,在浏览时,您始终可以强制浏览器信任不受可信机构支持的证书。 运行应用程序时不允许这样的奢侈,没有回调。

因此,您可以将证书添加到JVM信任库中,该信任库位于$JRE_HOME/security/lib 。 或者,您也可以使用-Djavax.net.ssl.trustStore=<path/to/store> Java启动参数传递信任-Djavax.net.ssl.trustStore=<path/to/store> 。 在出现此问题之前,我愚蠢地认为您可以在不同Java版本之间保留相同的信任库而不会出现故障。 事实并非如此:来回几次,我们终于找到了根本问题。

在Java版本1.4和6之间,IBM的好人似乎决定完全更改其安全提供程序。 这意味着当一个证书由Java 1.4 JVM存储时,Java 6 JVM没有机会读取它。如果您在那之前告诉过我,我会大笑。 现实比小说更奇怪。

结论:对于Ops,考虑无论操作系统如何,始终使用相同的安全提供程序可能是一个好主意。 有弹性的城堡就是这样的提供者之一,肯定还有其他的提供者。

Sun可能已经解散了,但是他们的工程师在Java 1.4和6之间保留了相同的安全提供程序。

翻译自: https://blog.frankel.ch/trust-stores-and-java-versions/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值