DER(Distinguished Encoding Rules,可分辨编码规则)是一种严格定义的ASN.1(Abstract Syntax Notation One)编码规则,用于表示和存储证书数据,以下是对DER证书格式的详细解析:
DER编码遵循ASN.1标准,采用TLV(Type-Length-Value,类型-长度-值)结构来表示数据,在DER证书中,这种结构被递归地应用,以构建出整个证书的数据结构。
DER证书包含多个字段,每个字段都遵循ASN.1标准进行编码,以下是一些主要的字段及其含义:
字段名 | ASN.1类型 | 含义 |
版本号 | INTEGER | 证书的版本,如v3表示X.509 v3版本 |
序列号 | INTEGER | 证书的唯一序列号,由证书颁发机构分配 |
签名算法标识符 | SEQUENCE | 描述证书签名所使用的算法,包括算法对象标识符、参数等 |
颁发者 | NAME | 证书颁发者的姓名,通常使用X.500名称格式 |
有效期 | SEQUENCE { TIME, TIME } | 证书的有效起始和结束日期/时间 |
主体 | NAME | 证书持有者的姓名,通常也使用X.500名称格式 |
主体公钥信息 | SEQUENCE | 包含主体公钥的算法对象标识符和公钥本身 |
发行者唯一标识符(可选) | BIT STRING(可选) | 证书颁发者的唯一标识符(如果存在) |
主体唯一标识符(可选) | BIT STRING(可选) | 证书持有者的唯一标识符(如果存在) |
扩展(可选) | SEQUENCE OF Extension(可选) | 一系列扩展字段,提供额外的证书信息 |
签名算法 | AlgorithmIdentifier | 用于计算证书签名的摘要算法 |
签名 | BIT STRING | 证书的签名,由证书颁发机构使用其私钥对证书的其他部分进行数字签名 |
1、二进制编码:DER证书采用二进制形式编码,因此比同等内容的PEM文件更小,并且不包含任何人类可读的内容。
2、严格定义:DER是一种严格的编码规则,确保了编码的唯一性和确定性,每个数据元素都被精确地编码为类型标识符、长度描述和实际数据元素。
3、内部存储和网络传输:由于DER格式的紧凑性和高效性,它常被用作内部存储和处理证书的方式,并且在网络协议中传输的证书通常也以DER编码形式存在。
PEM(Privacy-Enhanced Mail)是一种基于Base64编码的纯文本格式,用于存储和传输密钥和证书,与DER不同,PEM文件是可读的,并且通常以“—–BEGIN CERTIFICATE—–”和“—–END CERTIFICATE—–”作为开头和结尾,PEM文件实际上是Base64编码的DER证书或私钥,因此它们之间可以互相转换。
DER证书格式是一种严格定义的二进制编码规则,用于表示和存储X.509证书等数据结构,它采用TLV结构来组织数据,并包含多个字段来描述证书的各种属性,与PEM格式相比,DER格式更加紧凑和高效,适用于内部存储和网络传输。