1

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

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

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

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

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

谢谢你的时间。

4

1 回答 1

1

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

于 2019-05-23T08:10:24.313 回答