gpt4 book ai didi

java - 获取 java.security.cert.CertificateException,但是证书已导入信任库

转载 作者:行者123 更新时间:2023-12-01 13:13:56 25 4
gpt4 key购买 nike

我总是收到

java.security.cert.CertificateException: No subject alternative names present

异常(exception),但是我已将证书导入到我的 truusrstore 中。这是我的设置:

我正在使用基于com.sun.net.httpserver.HttpsServer的小型HTTPS服务器。我已经创建了一个带有自签名证书的 keystore :

keytool -genkey -keyalg RSA -alias myCert -keystore keystore.jks -storepass myPass -validity 360 -keysize 2048 

我将路径和密码作为 VM 参数传递给 keystore Djavax.net.ssl.keyStore=/tmp/truststore.jks Djavax.net.ssl.keyStorePassword=myPass

如果我运行openssl s_client -connect 192.168.1.101:4443我可以看到它使用了正确的证书。

为了信任客户端站点上的证书,我已从服务器 keystore 导出证书并将其导入到客户端信任库:

  keytool -export -alias myCert -file myCert.crt -keystore keystore.jks
keytool -import -trustcacerts -alias -file myCert.crt -keystore truststore.jks

对于客户端,我使用了一个使用 Jersey 的小型测试程序。我将信任库的路径作为 VM 参数 -Djavax.net.ssl.trustStore=/tmp/truststore.jks

传递
public class Tester {
public static void main(String[] args) {

Client client = ClientBuilder.newClient();
try {
String name = client.target("https://192.168.1.101:4443")
.request(MediaType.TEXT_PLAIN)
.get(String.class);

System.out.println(name);
} catch (final Exception e) {
System.err.println(e);
}
}
}

但是,无论自签名证书位于信任库中,我总是会得到

  java.security.cert.CertificateException: No subject alternative names present
exception

这可能是什么原因?

最佳答案

HTTPS 证书应包含 SubjectAltName 扩展名,其值应为 IP 地址(在您的情况下为 192.168.1.101)或主机的 DNS 名称。

关于java - 获取 java.security.cert.CertificateException,但是证书已导入信任库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22610886/

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