我正在从Java中的X509证书中提取SubjectAlternativeName,它似乎正在返回类似
的内容[2, domain.example.com ]
这是标准吗?价值中的2
代表什么?目前我只解析了2,但我不想部署代码并发现2
不是证书的标准输出。
这是我的代码
X509Certificate[] clientCert = (X509Certificate[]) req
.getAttribute("javax.servlet.request.X509Certificate");
senderDomain = clientCert[0].getSubjectAlternativeNames().toArray()[0]
.toString();
答案 0 :(得分:3)
X509Certificate.getSubjectAlternativeNames()
(也来自X.509 specification, section 8.3.2.1)
GeneralName ::= CHOICE {
otherName [0] OtherName,
rfc822Name [1] IA5String,
dNSName [2] IA5String,
x400Address [3] ORAddress,
directoryName [4] Name,
ediPartyName [5] EDIPartyName,
uniformResourceIdentifier [6] IA5String,
iPAddress [7] OCTET STRING,
registeredID [8] OBJECT IDENTIFIER}
所以2是DNS名称(验证服务器证书时的主机名),这很常见。 (如果你期望一个IP地址,你应该寻找它。)