证书一般都是x.509格式的证书,然后经过DER编码,DER是TLV编码,然后再经过base64编码后存储的。
我们打开ca.crt会发现是一个base64编码,如果直接在网上在线base64解码,解码后copy到一个文件里,
然后转换成16进制查看,这样是
行不通的,因为会把回车换行弄到里面,0a就变成了0d 0a。而且这时候的16进制某些位是错误的。
正确的方法,应该是,把证书文件,用binary方式,传送到linux下,然后用linux中的base64来进行文件解码。
命令如下:base64 -d -i ca.crt > crt.hex
-d的命令是解密,然后-i是--ignore-garbage When decoding, ignore non-alphabet characters.
Decoding require compliant input by default, use --ignore-garbage to
attempt to recover from non-alphabet characters (such as newlines) in
the encoded stream.
然后再用vim打开crt.hex,这时候再转换成16进制,就可以查看到正常的证书16进制的DER编码了。
证书的格式在RFC2459里,就是x.509.
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signatureValue BIT STRING
}
TBSCertificate ::= SEQUENCE {
version [0] EXPLICIT Version DEFAULT v1,
serialNumber CertificateSerialNumber,
signature AlgorithmIdentifier,
issuer Name,
validity Validity,
subject Name,
subjectPublicKeyInfo SubjectPublicKeyInfo,
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,