如何使用 openssl x509 工具查看证书中的字符串是否为 T61 或 UTF8 编码?还有更好的方法吗?
答案1
OpenSSL X509:如果你指的是主题和/或发行者字段,最简单、最易读的方式(在我看来)是
openssl x509 -in certpemfile -noout -text -nameopt multiline,show_type
或者如果你想仅有的名称字段更改-text
为-subject
和/或-issuer
。还有其他格式,如果你想要非平凡编码数据为了方便显示,你可能需要额外的选项;请参阅系统的手册页或在网上在“名称选项”大约一半的位置。如果您的输入是 OpenSSL 所称的“DER”(二进制)而不是更常见的“PEM”(文本),请添加-inform der
。
如果您指的是可以包含(可分辨)名称字段的扩展 - 我算上 SAN/IAN、NameConstraints、CRLDP、AIA/SIA,尽管我看不出 DN 在后三个中有什么用处,而且肯定还有更多 - 据我所知,不支持。但请看下文。
其他: openssl asn1parse
转储确切的类型、长度和大多任何 ASN.1 BER/DER 结构的值,包括证书。对于 X.509 格式的扩展(包装在 OCTET STRING 中),您可以使用它-strparse offset
来对嵌套结构进行 ASN.1 解码。识别和选择所需字段是您的工作,通常可能很困难,但由于 DN 和扩展都用前面的 OID(OpenSSL 称之为 OBJECT)标记其每个元素并asn1parse
解码 openssl 已知的所有 OID(您可以为其提供其他 OID),因此您通常只需直观地扫描countryName
等commonName
即可。有关 PEM 的说明:许多openssl
函数会创建或接受并忽略 PEM 格式数据的“注释”,但asn1parse
不会。它会处理 dash-BEGIN 和 dash-END 行,但几乎所有其他内容都会被视为数据的一部分,从而导致错误结果。验证您的输入文件(或管道或其他)是否包含仅有的这一证书