RFC 5280中写道,例如X520OrganizationName
可以使用以下编码之一:
X520OrganizationName ::= CHOICE {
teletexString TeletexString
(SIZE (1..ub-organization-name)),
printableString PrintableString
(SIZE (1..ub-organization-name)),
universalString UniversalString
(SIZE (1..ub-organization-name)),
utf8String UTF8String
(SIZE (1..ub-organization-name)),
bmpString BMPString
(SIZE (1..ub-organization-name)) }
如何查找给定 X509 证书中使用的编码?有没有openssl命令或者类似的软件?
使用ASN.1 DER解码器软件:
OpenSSL:
openssl asn1parse -i -in Foo.crt
(asn1parse 需要 Base64“PEM”格式,就像大多数其他 openssl 子命令一样,但您可以使用
-inform DER
它来为其提供二进制格式的证书。)P.Gutmann 的 dumpasn1:
dumpasn1 Foo.der
(dumpasn1 需要二进制(非 Base64)格式。使用
openssl x509 -in Foo.crt -out Foo.der -outform DER
甚至使用将证书转换为二进制 DERbase64 -d
。)asn1.js(在线): https: //lapo.it/asn1js/
(另一个类似的版本位于https://pkitools.net/pages/ca/asn1.html)
主题 DN 是证书中的第一个字段(
前在两个时间戳之后– 发行者 DN 是后在时间戳之前);它被表示为一个“序列”,每个 RDN 都是一个“集合”(通常有一个元素,但格式允许多个,例如CN=this+UID=that,OU=etc,O=etc
)。例如:
使用 OpenSSL 的更具体且更易于阅读的方法:
在旧版本的 OpenSSL 中,默认格式是 PEM,如果适用,您必须指定
-inform DER
(或缩写)。-inform d
然而,在 3.0.0 及以上版本(现在是唯一支持上游的版本)中,大多数命令包括x509
自动接受 PEM 或 DER 形式的输入。(asn1parse
不会,因为与其他命令不同,它不查看甚至不需要 PEM 标签行;它的“PEM”格式实际上接受任何base64,除非您指定新选项-strictpem
。有时这很有用,有时没有。)