仍然可以使用 Java Mission Control 连接到远程 JMX 但证书已过期?

Posted

技术标签:

【中文标题】仍然可以使用 Java Mission Control 连接到远程 JMX 但证书已过期?【英文标题】:Can still connect to remote JMX using Java Mission Control but certificate expired? 【发布时间】:2019-05-20 13:43:00 【问题描述】:

我有一个在远程服务器上运行的 java 进程,它使用com.sun.management.jmxremote JVM 参数公开一个配置 SSL 的 JMX 端口。该过程使用包含自签名证书的密钥库。

我在本地机器上运行 Java Mission Control (JMC) 以连接到这个远程 JMX 端口。我已经使用从远程密钥库导入自签名证书的信任库设置了 JMC。这一切都很好,我可以按预期连接安全 SSL。

我最近查看了自签名证书的详细信息,并惊讶地发现它在一个月前就已经过期了,因为我本以为无法使用 JMC 连接到远程进程,但我已经能够连接很好,没有过期警告。

我已确认它确实在使用此证书,因为当我在没有信任库的情况下运行 JMC 并尝试连接时,我得到了证书路径构建异常。我还查看了 SSL 调试,可以看到使用了证书。

谁能向我解释为什么我仍然能够使用过期证书建立此连接?如果这个过程暴露了我在浏览器中连接的 RESTful 服务,我会期望无法连接,或者我只会收到警告(或在 JMC 中完全没有)。

感谢您的宝贵时间。

【问题讨论】:

【参考方案1】:

经过进一步调查,我发现 Java Mission Control 使用的信任管理器会在没有警告的情况下接受过期的证书。但是,它会更喜欢一个有效的证书而不是一个过期的证书应该都可用。我不知道这种行为是否可以改变。

【讨论】:

以上是关于仍然可以使用 Java Mission Control 连接到远程 JMX 但证书已过期?的主要内容,如果未能解决你的问题,请参考以下文章

Java Mission Control 空格是啥意思?

Java Mission Control Flight Recorder 中没有记录 CPU 使用情况

Java Mission Control:飞行记录器抛出:javax.naming.ServiceUnavailableException

如何在 Java Mission Control 中分析异常?

问题解决解决Mac OS下JDK 1.8无法使用JMC(Java Mission Controller)的问题

问题解决解决Mac OS下JDK 1.8无法使用JMC(Java Mission Controller)的问题