ASN.1 描述了一种对数据进行表示、编码、传输和解码的数据格式,个人感觉和json,xml 意义差不多。
linux 下常用的.crt 证书,可以采用der编码(但更多情况下使用pem 编码)
windows 下的.cer证书,采用cer编码
上述的证书不包含密钥。.key文件存储一个公钥或私钥,使用der或pem编码
ber是最初的编码标准,der等都是在其基础上发展而来的。ber用的较少
per感觉用的较少,没找到多少资料
NULL:只包含一个值NULL,用于传送一个报告或者作为CHOICE类型中某些值
INTEGER:全部整数(包括正数和负数)
REAL:实数,表示浮点数
ENUMERATED:标识符的枚举(实例状态机的状态)
BITSTRING:比特串
OCTETSTRING:字节串
OBJECT IDENTIFIER,RELATIVE-OID:一个实体的标识符,它在一个全世界范围树状结构中注册
EXTERNAL,EMBEDDED PDV:表示层上下文交换类型
…String(除了BITSTRING、OCTETSTRING外):各种字符串
CHARACTERSTRING:允许为字符串协商一个明确的字符表
UTCTime,GeneralizedTime:日期
我还没有深入研究,先跳过
openssl genrsa -des3 -out ca.key 2048 如图
使用genrsa生成一个RSA的私钥文件,并使用DES3对称算法来加密该私钥文件,Enter pass phrase for ca.key 是让我们输入 DES3 加密算法的密钥
openssl req -new -x509 -days 365 -key ca.key -out ca.crtreq是创建一个请求,-key后接证书的私钥,-out后接输出,days指定证书有效期,如图:


openssl x509 -in ca.crt -noout -text-text是输出对象
openssl x509 -in ca.crt -noout -subject
openssl x509 -in ca.crt -noout -serial
SHA 特征值(就是用SHA算法得到的哈希值)openssl x509 -sha1 -in ca.crt -noout -fingerprint
openssl x509 -in ca.crt -pubkey -noout
上文观察证书内容已经对openssl有介绍了,现在看看 openssl asn1parse命令。
用法如下:
openssl asn1parse [-inform PEM|DER] [-in filename] [-out filename] [-noout] [-offset number] [-length number] [-i][ -dump ] [dlimit number] [-oid filename] [-strparse offset] [-genstr string ] [-genconf file]
选几个重要的参数看
-inform PEM|DER 指定输入内容的格式
-in filename 指定输入文件
-i 缩进
试一试
输入openssl asn1parse -i -in ca.crt,结果如下:

选一行37:d=3 hl=2 l= 9 prim: OBJECT
本周任务完成。偏重于概念的理解和工具的使用。还需仔细研究 ASN.1 编码标准。
原文:https://www.cnblogs.com/mtzf/p/12721052.html