1

我正在从 Java 中的 X509 证书中提取 SubjectAlternativeName,它似乎返回了类似的东西

[2, domain.example.com ] 

这是标准吗?2in 值代表什么?目前我只解析了 2 个,但我不想部署代码并发现这2不是证书的标准输出。

这是我的代码

    X509Certificate[] clientCert = (X509Certificate[]) req
    .getAttribute("javax.servlet.request.X509Certificate");

senderDomain = clientCert[0].getSubjectAlternativeNames().toArray()[0]
    .toString();
4

1 回答 1

3

这记录在X509Certificate.getSubjectAlternativeNames()(也来自X.509 规范,第 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 地址,则应查找 7。)

于 2013-09-12T22:33:33.477 回答