ASN.1规范#
ASN.1(Abstract Syntax Notation dot one)抽象记法1,是描述数据结构的标准记法。
常用编码规则#
- BER - 基本编码规则
- DER - 识别名编码规则(最常用)
- CER - 规范编码规则
文件格式关系#
- DER - 二进制格式,X.509证书通常采用此编码
- PEM - BASE64编码的DER,带特定头尾标记
- CRT/CER - 微软体系的证书后缀,与PEM实质相同
PKCS标准#
PKCS(Public Key Cryptography Standards)是一套公钥密码学标准:
| 标准 | 内容描述 |
|---|
| PKCS#1 | RSA加密标准,定义算法和填充模式 |
| PKCS#3 | Diffie-Hellman密钥交换协议 |
| PKCS#5 | 基于密码的加密标准(PBKDF2) |
| PKCS#7 | 证书消息语法标准 |
| PKCS#8 | 私钥信息语法标准(通用格式) |
| PKCS#12 | 个人信息交换格式(PFX) |
OpenSSL密钥操作#
生成RSA密钥#
1
2
| openssl genrsa -out private.pem 2048
openssl rsa -in private.pem -pubout -out public.pem
|
格式转换#
PKCS#1转PKCS#8:
1
| openssl pkcs8 -topk8 -nocrypt -in private.pem -out private_pkcs8.pem
|
PEM转DER:
1
| openssl rsa -in private.pem -outform DER -out private.der
|
密钥结构查看#
1
| openssl rsa -in private.pem -text -noout
|
X.509证书#
生成证书#
1
2
3
4
5
| # 生成证书签名请求
openssl req -new -key private.pem -out cert.csr
# 自签名证书
openssl x509 -req -days 365 -in cert.csr -signkey private.pem -out certificate.pem
|
证书查看#
1
| openssl x509 -in certificate.pem -text -noout
|
关键知识点#
PEM格式结构#
1
2
3
| -----BEGIN [LABEL]-----
BASE64编码的数据
-----END [LABEL]-----
|
PKCS#1 vs PKCS#8#
- PKCS#1 - 专用于RSA算法
- PKCS#8 - 通用私钥格式,支持多种算法
证书字段#
- 版本号
- 序列号
- 签名算法
- 颁发者信息
- 有效期
- 主体信息
- 公钥信息
- 扩展信息
- 签名值
证书和密钥的标准化格式确保了不同系统间的互操作性。理解这些格式对于进行安全的密钥管理、证书颁发和验证至关重要。在实际应用中,推荐使用PKCS#8格式存储私钥,使用X.509标准格式管理证书。