gpt4 book ai didi

java - 当服务器仅发送其证书并且颁发者被授权信息访问引用时使用 TLS

转载 作者:太空宇宙 更新时间:2023-11-03 12:58:57 26 4
gpt4 key购买 nike

有一个服务器只发送它自己的证书,链中没有它的颁发者(注意:它不是自签名的)。

当我在 Google Chrome 中连接到此服务器并查看证书时,我在“证书路径”选项卡中看到了完整的链,但是当我尝试使用 Java 连接到此服务器时,我使用的是 -Djavax.net。 debug=SSL 我只看到服务器自己的证书。

我注意到此证书上有一个名为“Authority Info Access”的扩展,它有一个字段“Alternative Name”,其中的 URL 指向颁发者的证书。我相信 Chrome(或者可能是 Windows)“知道”这个扩展而 Java 没有“知道”,有没有办法在 Java 中使用它? (最好没有额外的类,但我意识到如果它不是内置的,可能没有简单的方法。)

如果我只将根证书添加到 Java 的 cacerts 中,那么我将无法执行 TLS 握手(因为服务器只发送它自己的证书,而根证书没有颁发,中间件颁发)。该服务器不在我的控制范围内,我无法让它发送中间证书。由于 Chrome 能够解析中间证书(我想是通过 AIA),我怀疑可能有一种方法可以在 Java 中执行此操作,而无需将中间证书添加到 cacerts 文件,只有根目录,但我不知道如何使 Java 使用此 AIA 扩展来获取中间证书。

最佳答案

您需要设置相关的系统属性,使您的Java App能够下载根的中间证书。

System.setProperty("com.sun.security.enableAIAcaIssuers", "true");

关于java - 当服务器仅发送其证书并且颁发者被授权信息访问引用时使用 TLS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42814917/

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