java - 我正在为 CertificateException 的异常(exception)而苦苦挣扎。如何生成带有主题备用名称的证书

标签 java ssl cas

堆栈跟踪是:

Caused by: java.security.cert.CertificateException: No subject alternative names present
at sun.security.util.HostnameChecker.matchIP(HostnameChecker.java:144) ~[na:1.8.0_65]
at sun.security.util.HostnameChecker.match(HostnameChecker.java:93) ~[na:1.8.0_65]
at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:455) ~[na:1.8.0_65]
at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:436) ~[na:1.8.0_65]
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:200) ~[na:1.8.0_65]
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124) ~[na:1.8.0_65]
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1491) ~[na:1.8.0_65]

解决方案是:您的证书应包括该 ip 值作为主体替代名称值(IPAddress 类型:key=7)。 但是,如何在生成证书时将 ip 值包含为主题备用名称值?

最佳答案

我会尝试使用 opessl。检查这个网址,你会找到你需要的。 opensslSAN .

看看这部分:文本:

"So by using the common syntax for OpenSSL subject written via command line you need to specify all of the above (the OU is optional) and add another section called subjectAltName=. By adding DNS.n (where n is a sequential number) entries under the subjectAltName" field you'll be able to add as many additional "alternate names" as you want, even not related to the main domain. Obviously the first-level parent domain will be covered by most SSL products, unless specified differently. So here's an example to generate a certificate"

openssl req -new -key endpoint.com.key -sha256 -nodes -subj '/C=US/ST=New York/L=New York/O=End Point/OU=Hosting Team/CN=www.endpoint.com/ emailAddress=administrative-not-existent-address@our-awesome-domain.com/ subjectAltName=DNS.1=endpoint.com' > www.endpoint.com.csr

关于java - 我正在为 CertificateException 的异常(exception)而苦苦挣扎。如何生成带有主题备用名称的证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34735621/

相关文章:

java - pig 拉丁语程序 - 元音问题

java - 如何在Android中的Web服务的 ListView 中显示数据

google-chrome - Chrome - 注册表中的证书设置

spring-security - 如何在登录时提供额外的用户数据 (CAS)

java - 使用字符串键和数组列表的 TreeMap

java - 从 Oracle 读取 Windows-1252 格式并使用 Latin1 字符 UTF-8 编码写入 XML 文件

javascript - Samsung Smart TV 通过 SSL (HTTPS) 请求。无法从服务器获得答案

Java SSLServerSocket 提供了错误的证书

java - 如何在运行时禁用 Grails Spring 插件?

powershell - 无法将 Web 请求发送到 Tomcat 上的 CAS 服务器