在 Linux 平台上,可以使用 openssl 命令查看 ASN.1 编码文件的内部结构。如果在 Windows 平台上编译过 OpenSSL,也能使用该命令。如果文件内容是 DER 编码格式,查看命令如下:
openssl ans1parse -inform DER -i -in 文件名
如果文件内容是 PEM 格式,命令如下:
openssl asn1parse -i -in 文件名
其中 -i 参数表示在显示输出时做缩进处理。查看一个 PKCS#7 DigestedData 类型、DER 编码的文件,显示类似于下图:
针对 X.509 数字证书这种特殊类型文件,可以使用命令:
openssl X509 -inform DER -in DER格式的证书文件名 -noout -text
或
openssl X509 -inform PEM -in PEM格式的证书文件名 -noout -text
其中 -text 参数表示显示证书内容细节,包括公钥、签名算法、颁发者和持有者、序列号等,-noout 参数表示在末尾处不显示证书的Base64编码。由于证书包含内容较多,为了分屏显示,可以在命令结尾加上 | more 。查看一张 DER 编码的数字证书,显示类似于下图:
如果不加上 -noout 参数,在显示证书内容的最后会包含证书的 Base64 编码,如下图所示:
在 Windows 平台上,从 Win7 开始微软提供了一个名为 CertUtil.exe 的工具,使用它能够查看 DER 或 PEM 编码的文件内部结构,具体用法如下:
certutil -asn 文件名
用它查看一个 PKCS#7 DigestedData 类型、DER 编码的文件,显示类似于下图:
用它查看数字证书文件,显示类似于下图:
注意:Linux 下有一个名为 certutil 的同名命令,但用法不一样。