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.crt
req
是创建一个请求,-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