java - 无法找到到所请求目标的有效证书路径 - 即使在导入证书后也会出错

标签 java ssl keytool

我有一个 Java 客户端尝试使用自签名证书访问服务器。

当我尝试发布到服务器时,我收到以下错误:

unable to find valid certification path to requested target

对这个问题做了一些研究,然后我做了以下。

  1. 将我的服务器域名保存为 root.cer 文件。

  2. 在我的 Glassfish 服务器的 JRE 中,我运行了这个:

    keytool -import -alias example -keystore cacerts -file root.cer
    
  3. 为了检查证书是否已成功添加到我的 cacert,我这样做了:

    keytool -list -v -keystore cacerts
    

    我可以看到证书存在。

  4. 然后我重新启动 Glassfish 并重试了“帖子”。

我仍然遇到同样的错误。

我有一种感觉,这是因为我的 Glassfish 实际上并未读取我已修改的 cacert 文件,而可能是其他文件。

你们中是否有人遇到过这个问题并且可以将我推向正确的方向?

最佳答案

不幸的是 - 这可能是很多事情 - 许多应用程序服务器和其他 Java“包装器”倾向于使用属性以及它们“自己”对钥匙串(keychain)的处理等等。所以它可能正在寻找完全不同的东西。

缺乏桁架 - 我会尝试:

java -Djavax.net.debug=all -Djavax.net.ssl.trustStore=trustStore ...

看看是否有帮助。除了“全部”,还可以将其设置为“ssl”、 key 管理器和信任管理器——这可能对您的情况有所帮助。将其设置为“帮助”将在大多数平台上列出如下内容。

无论如何 - 请确保您完全了解 keystore (您拥有用于证明自己身份的私钥和证书)和信任库(确定您信任的人)之间的区别 - 以及您的自己的身份也有一个对根的信任“链”——它与到根的任何链是分开的,你需要弄清楚你信任的“谁”。

all            turn on all debugging
ssl            turn on ssl debugging

The   following can be used with ssl:
    record       enable per-record tracing
    handshake    print each handshake message
    keygen       print key generation data
    session      print session activity
    defaultctx   print default SSL initialization
    sslctx       print SSLContext tracing
    sessioncache print session cache tracing
    keymanager   print key manager tracing
    trustmanager print trust manager tracing
    pluggability print pluggability tracing

    handshake debugging can be widened with:
    data         hex dump of each handshake message
    verbose      verbose handshake message printing

    record debugging can be widened with:
    plaintext    hex dump of record plaintext
    packet       print raw SSL/TLS packets

来源:# 见 http://download.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#Debug

关于java - 无法找到到所请求目标的有效证书路径 - 即使在导入证书后也会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9210514/

相关文章:

android - key 工具错误 : java. lang.ClassNotFoundException : org. bouncycaSTLe.jce.provider.BouncyCaSTLeProvider

java - 为 hibernate 性能编写好的代码

php - 无法使用 ssl 与 PDO 连接,但 mysqli 与 ssl 可以工作

java - 在压缩文件中搜索压缩文件中的字符串

asp.net-mvc - 使用 ssl 运行 asp.net mvc 应用程序时安全连接失败

ios - 无论我尝试什么,我都会得到 "App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure."

android - 我从未为我的 keystore 和别名设置任何密码,那么它们是如何创建的?

android - Android 上的 map v2 API key

java - 当组件超出文本区域时启用 ScrollPane

java - 按顺序执行两个 Action