gpt4 book ai didi

java - 为什么 java 在 cacert.org : "keyCertSign bit is not set"? 上制作的证书上阻塞

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:33:39 26 4
gpt4 key购买 nike

我在 CAcert 创建了一个 SSL 服务器证书.当我尝试通过 Java 程序(如下)从该服务器获取页面时,我得到了

Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: CA key usage check failed: keyCertSign bit is not set

有人知道是什么原因造成的吗?

  • 我尝试创建由他们的 1 类和 3 类根证书签名的证书,结果相同。
  • 当我尝试从其他两个使用 CAcert.org 证书的站点获取页面时,错误不会发生:https://www.cacert.orghttps://pause.perl.org (让我相信来自 cacert.org 的根证书和 3 类证书已正确安装在我的系统上)。
  • 我可以在 keytool -keystore/etc/ssl/certs/java/cacerts -list 中看到 cacert.org 证书。
  • 是的,我知道很少有网络浏览器附带 cacert.org 根证书和 3 类证书。
  • 证书是 *.an.example.com 的通配符证书(已编辑真实域)。

这是我用来测试的 Java 代码:

class Test {
public static void main(String args[]) throws Exception {
java.net.URL url = new java.net.URL(args[0]);
java.io.InputStream s = url.openStream();
}
}

full stack trace似乎没有添加任何有用的信息。

keytool(1) 联机帮助页确实提到了

Extensions can be marked critical to indicate that the extension should
be checked and enforced/used. For example, if a certificate has the
KeyUsage extension marked critical and set to "keyCertSign" then if this
certificate is presented during SSL communication, it should be rejected,
as the certificate extension indicates that the associated private key
should only be used for signing certificates and not for SSL use.

但我检查了证书,虽然“证书 key 使用”扩展确实显示“签名”,但它也被标记为“不重要”。

抱歉,我不想透露我的域名或证书,但如果需要,我可能可以启动服务器进行测试。

最佳答案

原来是证书本身的问题。 Folks at CAcert.org fixed it .耶!

关于java - 为什么 java 在 cacert.org : "keyCertSign bit is not set"? 上制作的证书上阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8179932/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com