作为一个加密开发者,一定要熟悉证书密钥的各种格式、编码与标准。
PEM
PEM(Privacy-Enhanced Mail,隐私增强邮件) 是一种事实上的文件格式,用于存储和发送加密密钥、证书和其他数据,它基于一组定义“隐私增强邮件”的 1993 IETF标准。
许多密码学标准使用ASN.1来定义它们的数据结构,并使用可分辨编码规则(DER) 来序列化这些结构。
PEM 格式通过使用base64对二进制数据进行编码解决了这个问题。PEM 还定义了一个单行页眉,由 -----BEGIN, a label, and -----组成,以及单行页脚,由-----END, a label, and -----组成。标签确定编码消息的类型。常用标签包括 CERTIFICATE, CERTIFICATE REQUEST, PRIVATE KEY and X509 CRL。
-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----
PEM 数据通常存储在带有“.pem”后缀,“.cer”或“.crt”后缀(用于证书)或“.key”后缀(用于公钥或私钥)的文件中。
ASN.1
Abstract Syntax Notation One ( ASN.1 ) 是一种标准接口描述语言,用于定义可以跨平台方式序列化和反序列化的数据结构。它广泛用于电信和计算机网络,尤其是密码学。
DER编码
DER(Distinguished Encoding Rules,可分辨编码规则)是BER的一种受限变体,用于为ASN.1描述的数据结构生成明确的传输语法。
X.509
在密码学中,X.509是定义公钥证书格式的国际电信联盟 (ITU)标准。 X.509 证书用于许多 Internet 协议,包括作为HTTPS基础的TLS/SSL,浏览网页的安全协议。它们还用于离线应用程序,例如电子签名。
证书的结构中Subject Public Key Info 字段用来包含公钥。
证书文件的扩展名
X.509 证书有几种常用的文件扩展名。其中一些扩展还用于其他数据,例如私钥。
.cer, .crt, .der– 通常采用二进制DER形式,但 Base64 编码的证书也很常见(见.pem上文)
.p12–