X.509、PKCS、PEM、DER 以及 ASN.1详解

一、ASN.1 - Abstract Syntax Notation One

ASN.1(抽象语法标记)是一种用来定义数据结构的描述语言,主要作用是用来描述数据结构,基于这种数据结构可以进行数据的表示、编码、传输和解码。该语言同其他语言一样包含数据的类型(INTEGER、BIT STRING)、长度、语法等。相关代码实例如下:

Question ::= SEQUENCE {
    trackingNumber INTEGER,
    question       IA5String
}

PKCS协议组标准和X.509协议标准均采用ASN.1来定义密钥或证书的数据结构。

二、X.509标准

在密码学(cryptography)中,X.509 是定义公钥证书(public key certificates)格式的标准。X.509 证书用于许多 Internet 协议,包括 TLS/SSL,它是 HTTPS(用于浏览 Web 的安全协议)的基础。Public Key Certificates又被称为Digital Certificate 或 Identity Certificate。

An X.509 certificate contains a public key and an identity (a hostname, or an organization, or an individual), and is either signed by a certificate authority or self-signed.

即一个X.509 Certificate包含一个Public Key和一个身份信息,它要么是被CA签发的要么是自签发的。X.509标准规定了该证书需要包含的字段信息。

三、PKCS标准

PKCS(Public Key Cryptography Standards)公钥密码学标准。
前面提到的X.509是定义Public Key Certificates的格式的标准,看上去和PKCS有点像,但实际上不同,PKCS是Public Key密码学标准。此外Public-Key Cryptography虽然名字看上去只涉及Public Key,实际上也涉及Priviate Key,因此PKCS也涉及Private Key。

四、编码格式

1、DER格式

如何将上述使用X509标准或者PKCS标准定义的证书或者私钥进行编码呢?我们一般使用ASN.1标记语言来对X509标准或者PKCS标准定义的证书或者私钥来进行数据结构方面的描述,对于ASN.1标记语言有一套相关的编码规则,这些编码规则用来规定如何用二进制来表示ASN.1数据结构,DER是其中一种。

2、PEM格式(Privacy-Enhanced Mail)

PEM是一个用来存储和发送密码学key、证书和其他数据的文件格式的事实标准。许多使用ASN.1的密码学标准(比如X.509和PKCS)都使用DER编码,而DER编码的内容是二进制的,不适合与邮件传输(早期Email不能发送附件),因此使用PEM把二进制内容转换成ASCII码

如何区分DER与PEM格式呢
区分DER与PEM格式的方式如下

[yiifung@master01 ssl]$ file test.der 
test.der: data
[yiifung@master01 ssl]$ file test.key 
test.key: PEM RSA private key
[yiifung@master01 ssl]$ 

3、PEM格式参考

PKCS#8 私钥

-----BEGIN PRIVATE KEY-----
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAM5mqsLBV+WnLkJr
.......................
-----END PRIVATE KEY-----

PKCS#8 加密后的私钥

-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIC5TBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQgMBCErYGzQwRfEfA

-----END ENCRYPTED PRIVATE KEY-----

PKCS#8 公钥

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOZqrCwVflpy5CawRvRHHWeW3g
XRKuryppA9sFAVl18xhBjSjOYmSU8cy4bwweSO3T2aOrAcFW0ZTD8vPwkiLlyB2T
fOmy7FWHf+JFBLKBYJB7UYKGFmMZ386HT9O13u47YEl6uV2vK9yqUuOl1XlnkfRB
UtHj8xzgk5UzUPm2WwIDAQAB
-----END PUBLIC KEY-----

PKCS#1 私钥

-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQCTT+pqcy5ERS82/oX2VfIwf1o9lz4NTJ634DreXW/j8EocTdVg
............................
-----END RSA PRIVATE KEY-----

PKCS#1 加密后的私钥

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,179848A23F2E54F9DFFE30DAEFC998BA

ntxJglYG9bTztUAIZBER49hacqK4bFqVa7dZYWNY2jleHIaV9h9cVL0haryNPex0
...................
-----END RSA PRIVATE KEY-----

PKCS#1 公钥

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOZqrCwVflpy5CawRvRHHWeW3g
XRKuryppA9sFAVl18xhBjSjOYmSU8cy4bwweSO3T2aOrAcFW0ZTD8vPwkiLlyB2T
fOmy7FWHf+JFBLKBYJB7UYKGFmMZ386HT9O13u47YEl6uV2vK9yqUuOl1XlnkfRB
UtHj8xzgk5UzUPm2WwIDAQAB
-----END PUBLIC KEY-----

引用

X509-RFC5280

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值