java - SSL 证书 - 不存在主题备用名称

标签 java ssl ssl-certificate cas

我尝试生成自签名 SSL 证书,但在 cas sso 中出现以下错误:

java.lang.RuntimeException: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names present

我正在使用 open jdk 7 并使用了以下命令:

keytool -genkey -alias axyz -keypass changeit -keyalg RSA -ext san=ip:192.168.1.4

keytool -export -alias axyz -keypass changeit -file axyz.crt

keytool -import -file axyz.crt -alias axyz -keystore/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/security/cacerts

主机名:vaapdev 内部IP地址:192.168.1.4 公网IP地址:108.51.62.36

不确定我哪里出错了,我在 -ext 中同时尝试了 192.168.1.4 和 108.51.62.36 尝试不使用 -ext 参数。

最佳答案

使用主机名时,可以回退到服务器证书的主题 DN 中的通用名称,而不是使用主题备用名称。

当使用 IP 地址时,证书中必须有一个主题备用名称条目(IP 地址类型,而不是 DNS 名称)。

您将在此处找到有关规范以及如何生成此类证书的更多详细信息:https://stackoverflow.com/a/8444863/372643

关于java - SSL 证书 - 不存在主题备用名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20722406/

相关文章:

ios - 如何为 AFNetworking 创建 .cer 文件以在 iOS 应用程序包中使用

java - 为什么 Java 的 SSL 返回的 Google 证书上的序列号与 Firefox 和 Chrome 返回的不同?

java - 防止 HTML JTextPane 设置文本输入格式

java - 如何返回第一个和最后一个数字交换的数组?

java - 如何从知道偏移量和长度的文件中获取特定字节?

apache - 此站点需要基于 DHE 的 SSL 密码套件。这些已弃用,将在 2016 年 7 月左右的 M52 中删除

ssl - 客户端证书未绑定(bind)到特定 IP 或域?

java - 使用 RegExp 获取括号之间的整数

java - ClientHello TLSv1 而不是 TLSv1.2

python - Django 站点加密