是否可以完全以 BMPString 编码生成证书?

Is it possible to generate a certificate fully in BMPString encoding?

在使用 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:将“except”更改为“but not”。

编辑 2:从“CN、Email、OrganizationName、LocalityName 都在 BMPString 而不是 OrganizationalUnitName 中。”删除了 Email。

CN, Email, OrganizationName, LocalityName are all in BMPString except OrganizationalUnitName

Minor:'except'在英语中的意思是从前面或其他地方一般陈述的内容中减去;当 Y 不包含在 X 中时,说 'X except Y' 是错误的。我相信你的意思可以正确地表述为“CN、电子邮件、组织、地点 [全部] 在 BMPString 但不是 组织单位".

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

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

但是,标准要求国家必须PrintableString,电子邮件必须IA5String;这些未定义为 DirectoryString 并且不允许编码为 BMPString.

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