主题替代名称必须具有在java中工作的方案?
我有一个带有SAN扩展的SSL证书,其域如下:主题替代名称必须具有在java中工作的方案?,java,ssl,ssl-certificate,x509certificate,x509,Java,Ssl,Ssl Certificate,X509certificate,X509,我有一个带有SAN扩展的SSL证书,其域如下: foo.com bar.foo.com something.foo.com 我已将此证书添加到cacerts,并尝试使用apache http客户端连接到bar.foo.com。 没想到我遇到了一个例外: 由于java.io.IOException导致的不可解析SubjectAlternativeName扩展:URI名称必须包括scheme:foo.com 这让我找到了sun.security.x509.Urumeclass第112行: 对我
- foo.com
- bar.foo.com
- something.foo.com
bar.foo.com
。
没想到我遇到了一个例外:
由于java.io.IOException导致的不可解析SubjectAlternativeName扩展:URI名称必须包括scheme:foo.com
这让我找到了sun.security.x509.Urume
class第112行:
对我来说,这意味着SAN域必须在实际域有效之前具有scheme。看来应该是:
keytool -list -keystore truststore.jks -v
(...)
#10: ObjectId: 2.5.29.17 Criticality=false
Unparseable SubjectAlternativeName extension due to
java.io.IOException: URI name must include scheme:foo.com
有几种类型的SAN名称。在TLS中,仅使用
dnsName
名称类型(ipAddress
很少使用)dnsName
名称类型仅包括没有任何URI方案的域部分
您所引用的链接()是指另一种SAN名称类型,称为
uriName
,它实际上必须包括协议方案。此名称类型通常用于表示证书和CRL中CRT/CRL/OCSP资源的URL。并且,Urineme
不用于身份验证。因此,您确实需要这种名称类型:我认为情况并非如此。我已经编辑了我的问题并添加了keytool也会失败的信息,您能提供SAN扩展转储吗?我根据您在第一个问题中提供的内容发布了我的答案。我可以假定您的SAN格式不正确。SAN扩展的文本转储会很有帮助。我必须更改一些字母,但基本上是这样的0P..q-fth-sct.xqlav-fth.com..sct.xqlav.com..q-fth-sct.xqlav-fth.com..sct.xqlav.com
,我使用apache http调用的域是sct.xqlav.com
,它失败了,但我提到的例外情况与此相同根据我的ISP的DNS和Google(8.8.8.8)Cloudfront(1.1.1)Level3(4.2.2.1),keytool throwssct.xqlav.com
不存在(nxdomain)。如果您拥有(或获得)OpenSSL,OpenSSL s_客户端-连接主机:443-服务器名主机
将以PEM格式显示您的证书(虚线开始行、base64的几行、虚线结束行);将其添加到您的Q和/或doopenssl x509-noout-text@dave\u thompson\u 085是的,此域不是公共域。这只是一个例子
keytool -list -keystore truststore.jks -v
(...)
#10: ObjectId: 2.5.29.17 Criticality=false
Unparseable SubjectAlternativeName extension due to
java.io.IOException: URI name must include scheme:foo.com