glassfish - 以管理员身份执行 Glassfish 5.1 时出现 Java 安全错误,但证书有效

标签 glassfish ssl-certificate

我正在尝试在 Glassfish 5.1.0 中部署 Oracle ORDS 19.1 war 文件。

我遇到了部署错误,我想我已经找到了解决方案。

但是,当我尝试运行修复程序时,我又收到了另一个错误,这对我来说没有任何意义。
在 Glassfish 5.1.0 下:

[oracle@secure-web-server-dvl glassfish]$ bin/asadmin set configs.config.server-config.cdi-service.enable-implicit-cdi=false
NCLS-ADMIN-00010
javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateExpiredException: NotAfter: Tue Apr 03 18:09:20 EDT 2018
Command set failed.

这是 SSL 证书过期错误。但是,我的证书没有过期。

我使用 keytool 检查 cacerts.jks 和 keystore.jks 中所有证书的有效性。

一切都是有效的。有人可以在这里解释真正的问题吗?

帮助!

最佳答案

  • 更新:

  • 你是如何运行keytool的?默认列表(没有 -v 表示详细)为您提供证书有效的日期,而不是直到!),尝试添加 -v 或使用替代工具,例如:https://keystore-explorer.org/
  • 原帖:

  • 如果无法访问您的环境或任何重现此问题的步骤,我无法为您提供简单的修复 - 抱歉。遗憾的是,这个特殊的异常没有显示堆栈跟踪,告诉我们更多是哪个代码导致它,或者调试日志告诉我们哪个 url/连接尝试导致了这个。

    查找此特定证书到期日期只会在其他地方显示完全相同的问题(交叉发布):
  • https://code-adviser.com/detail_56084838
  • https://techutils.in/blog/2019/05/13/stackbounty-glassfish-ssl-certificate-java-security-error-when-executing-glassfish-5-1-asadmin-but-certificate-is-valid/

  • 因此,我希望您的问题是特定于您本地环境的问题,例如:
  • (透明代理服务器/负载均衡器/前端网络服务器)证书过期,或将请求重定向到与预期不同的 IP 地址
  • LDAP 服务器通过 ssl/tls 处理的身份验证,证书过期
  • 自定义 keystore 配置指向与您预期不同的 keystore 文件(最有可能带有扩展名:jks、pkcs12/p12/pfx、cer,或取决于您的 Java 安全提供程序和相关配置(对于 Oracle Java,它甚至可能在 Windows 中) keystore 等,请参阅:https://docs.oracle.com/en/java/javase/11/security/oracle-providers.html )

  • 尝试以下操作可能有用:
  • 使用系统属性运行相关的 Java(客户端)应用程序:javax.net.debug=all,例如使用 java -Djavax.net.debug=all ... some.jar/someclass
  • 如果您想使用其他工具进行检查,请尝试使用:
  • openssl s_client -connect host:port -servername host -showcerts
  • 将您在上述输出中看到的任何证书保存到 cert.txt 之类的文件中,并使用以下命令检查它们:
  • openssl x509 -in cert.txt -noout -text
  • 如果您不顾一切,风险自负,请暂时将系统日期/时间更改为到期日期/时间之前,请先制作系统快照/备份 - 以防万一:-)

  • 如果一切都失败了:
  • 拦截与网络相关的系统调用(例如在 unix 上使用 strace 或在 Windows 上使用 procmon)
  • 拦截流量(例如使用 tcpdump、wireshark 等)并使用 wireshark 进行分析
  • 连接 Java 调试器并在该 java.security.cert.CertificateExpiredException 上放置断点

  • 祝你好运!

    关于glassfish - 以管理员身份执行 Glassfish 5.1 时出现 Java 安全错误,但证书有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56084838/

    相关文章:

    java - 获取 Glassfish2 域的名称

    postgresql - Glassfish 4 和 Postgres ConnectionPool 上的 JSF 2.2 + EJB 3 + JPA

    ssl - 私钥 PEM header

    ssl - 我如何知道 ssl 证书颁发给了哪些域?

    java - Glassfish 2.1 突然失败

    java - Glassfish 记录日期和夏令时?

    javascript - Glassfish 不更新 JavaScript 文件

    android - 使用 SSL 的 Android 和 Python 之间的协议(protocol)错误

    ssl - 更改 SSL 证书

    java - 在 Java 中验证 SSL 证书的通用名称