0

在使用 openssl 命令创建证书时,我使用的是这样的自定义配置文件:

prompt = no
distinguished_name = dn
req_extensions = ext
string_mask = pkix

[dn]
CN = распространенное имя
emailAddress = envek@envek.com
O = Организация
OU = SSL Test
L = Москва
C = RU

[ext]
subjectAltName = DNS:BMPString.com,DNS:*.BMPString.com

现在,当我使用此命令执行 asn1parse 时:

openssl asn1parse -in bmp.crt -i -strparse 200

    0:d=0  hl=3 l= 243 cons: SEQUENCE
    3:d=1  hl=2 l=  87 cons:  SET
    5:d=2  hl=2 l=  85 cons:   SEQUENCE
    7:d=3  hl=2 l=   3 prim:    OBJECT            :commonName
   12:d=3  hl=2 l=  78 prim:    BMPSTRING
   92:d=1  hl=2 l=  30 cons:  SET
   94:d=2  hl=2 l=  28 cons:   SEQUENCE
   96:d=3  hl=2 l=   9 prim:    OBJECT            :emailAddress
  107:d=3  hl=2 l=  15 prim:    IA5STRING         :envek@envek.com
  124:d=1  hl=2 l=  53 cons:  SET
  126:d=2  hl=2 l=  51 cons:   SEQUENCE
  128:d=3  hl=2 l=   3 prim:    OBJECT            :organizationName
  133:d=3  hl=2 l=  44 prim:    BMPSTRING
  179:d=1  hl=2 l=  17 cons:  SET
  181:d=2  hl=2 l=  15 cons:   SEQUENCE
  183:d=3  hl=2 l=   3 prim:    OBJECT            :organizationalUnitName
  188:d=3  hl=2 l=   8 prim:    PRINTABLESTRING   :SSL Test
  198:d=1  hl=2 l=  33 cons:  SET
  200:d=2  hl=2 l=  31 cons:   SEQUENCE
  202:d=3  hl=2 l=   3 prim:    OBJECT            :localityName
  207:d=3  hl=2 l=  24 prim:    BMPSTRING
  233:d=1  hl=2 l=  11 cons:  SET
  235:d=2  hl=2 l=   9 cons:   SEQUENCE
  237:d=3  hl=2 l=   3 prim:    OBJECT            :countryName
  242:d=3  hl=2 l=   2 prim:    PRINTABLESTRING   :RU

CN、OrganizationName、LocalityName 都在 BMPString 中,但没有在 OrganizationalUnitName 中。

我理解逻辑,因为所有字符都在 OrganizationalUnitName 中 PrintableString 的保护伞下,这就是为什么它被编码为相同的原因。

但我想在 BMPString 中自动编码“PrintableString”字符,这可能吗?

编辑 1:将“除外”更改为“但不是”。

编辑 2:从“CN、Email、OrganizationName、LocalityName 都在 BMPString 但不是 OrganizationalUnitName”中删除了电子邮件。

4

1 回答 1

0

CN、Email、OrganizationName、LocalityName 都在 BMPString 中,除了 OrganizationalUnitName

次要:英语中的“除外”是指从前面或其他地方的一般陈述中减去;当 Y 不包含在 X 中时,说“除 Y 之外的 X”是错误的。我相信你的意思可以正确地表述为“CN、电子邮件、Org、Locality 都在 BMPString 中,但不是OrgUnit”。

主要:电子邮件不在 BMPString 中。见下文。

对于在标准中定义的属性,DirectoryString取决于 ASN.1 的版本,它要么是CHOICE类型,要么是扩展为CHOICE类型的宏,并且被您拥有的大多数属性使用,配置string_mask=MASK:0x800强制它们为BMPString.

但是,标准要求 Country必须PrintableString并且 email必须IA5String; 这些未定义为DirectoryString,也不允许编码为BMPString.

我假设您意识到PKIX标准已经禁止 BMPString 用于 DN 属性 18 年,因此任何在 Internet 上使用并维护得足够好以至于今天可以安全使用的软件都应该拒绝您的证书。不过,这并不妨碍您创建它们。

于 2022-01-19T06:46:13.243 回答