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

Can still connect to remote JMX using Java Mission Control but certificate expired?

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

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

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

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

谁能向我解释为什么我仍然能够使用过期的证书建立此连接?如果此过程公开了我在浏览器中连接到的 RESTful 服务,我预计将无法连接,或者我只会收到警告(或者像 JMC 一样什么都没有)。

感谢您的宝贵时间。

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