java - 安装更新 SSL 证书会破坏 Java Web 集成吗?

标签 java wcf ssl https keystore

我们在 Windows 2013 服务器上托管了一个 .Net WCF 服务。通过 HTTPS 公开的服务的 SSL 证书即将到期。已生成更新的证书并将其应用于服务器。

我们所有的 .Net 客户端应用程序继续正常运行,但我们基于 Java 的应用程序开始出现故障。我被告知服务器管理员必须手动进入这些框并使用新更新的证书更新 Java keystore 。

如果是真的,这让我震惊。所有网络浏览器、.Net 应用程序等...都可以毫无问题地处理 SSL 证书更改。当证书最终再次更新时,您如何防止将来使用 Java keystore 出现此类问题?有什么办法可以让 keystore 在这方面更加“动态”吗?

最佳答案

Java 客户端不能很好地处理新服务器证书的可能原因很简单,这些客户端的 Java 版本已过时。

Java 运行时环境 (JRE) 的每个安装都带有一个名为 cacerts信任存储 文件(位于 <java-home>/lib/security/cacerts ),其中包括在 JVM 中运行的 SSL/TLS 客户端将自动信任的所有证书颁发机构 (CA) 和中间证书。如果您的新服务器证书是由不在 cacerts 中的 CA 证书编写/签署的客户端的 JRE 文件,则客户端无法信任服务器并且设置 SSL/TLS 连接将失败。

我假设 .NET 客户端直接使用底层 Windows 操作系统的可信证书;如果启用自动 Windows 更新,新的 CA 证书将毫不费力地提供给客户端。网络浏览器也是如此:它们经常通过自动更新保持最新。然而,在许多环境中,新的 JRE 版本——尤其是在 Java 应用服务器安装中——需要手动安装,这意味着如果不付出额外的努力,可能无法立即获得最新最好的 CA 证书。

也有可能您的服务器正在使用由未包含在 cacerts 中的 CA 颁发的证书。甚至最新的 JRE 版本的文件。在这种情况下,除了让系统管理员手动导入证书外别无选择。

关于java - 安装更新 SSL 证书会破坏 Java Web 集成吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30020121/

相关文章:

c# - 将数组数据从 excel VBA 发送到 WCF

tomcat - 使用 maven 在 tomcat7 上使用 SSL

ssl - Apache Axis 自定义信任管理器

java - 正则表达式从文件中检索双数字,但忽略具有多个点的数字

java - 如何通过将值从另一个变量传递给对象来访问类变量?

c# - 没有端点监听 net.pipe

.net - WAS 托管带有 net.tcp 绑定(bind)的 WCF 服务

python - 安装 spaCy - SSL 证书错误

java - 有没有播放视频的框架或cocoa API?

Java 正则表达式