2020_1课程设计—基于BC的证书格式转换工具的设计与实现—Week 1
本周学习规划
- 收集相关资料,学习证书格式的相关知识
- 收集相关资料,学习OpenSSL的使用方法
- 安装OpenSSL
- 使用OpenSSL命令行查看证书,并实现证书格式转换
学习笔记
常见证书标准
-
x509
- 基本的证书格式,只包含公钥。
x509证书由用户公共密钥和用户标识符组成。此外还包括版本号、证书序列号、CA标识符、签名算法标识、签发者名称、证书有效期等信息。
- 基本的证书格式,只包含公钥。
-
PKCS#7
- Public Key Cryptography Standards #7。
- PKCS#7一般把证书分成两个文件,一个公钥、一个私钥,有PEM和DER两种编码方式。PEM比较多见,是纯文本的,一般用于分发公钥,看到的是一串可见的字符串,通常以.crt,.cer,.key为文件后缀。DER是二进制编码。
- PKCS#7一般主要用来做数字信封。
-
PKCS#10
- 证书请求语法。
-
PKCS#12
- Public Key Cryptography Standards #12。
- 一种文件打包格式,为存储和发布用户和服务器私钥、公钥和证书指定了一个可移植的格式,是一种二进制格式,通常以.pfx或.p12为文件后缀名。
- 使用OpenSSL的pkcs12命令可以创建、解析和读取这些文件。
- P12是把证书压成一个文件,xxx.pfx。主要是考虑分发证书,私钥是要绝对保密的,不能随便以文本方式散播。所以P7格式不适合分发。.pfx中可以加密码保护,所以相对安全些。
常见数字证书编码格式
-
PEM Format
-
Privacy Enhanced Mail
-
内容以"-----BEGIN..."开头,以"-----END..."结尾
-
查看PEM格式证书的信息:openssl x509 -in certificate.pem -text -noout
-
ASCII文件使用Base64编码
-
常用后缀为 .pem, .crt, .cer, .key
-
Apache 使用 PEM 证书。
-
-
DER Format
- Distinguished Encoding Rules
- 二进制文件
- 扩展名 .cer & .der
- 查看DER格式证书的信息:openssl x509 -in certificate.der -inform der -text -noout
- 一般用于java平台
-
PFX Format
- PFX也称为PKCS#12(Public Key Cryptography Standards #12),常见的扩展名是: .pfx 和 .p12
- 二进制文件,用于存储服务器证书,公钥和私钥都包含,而且加密.
安装OpenSSL
- 访问官网下载OpenSSL
- 按照默认选项安装
- 配置环境变量,在系统环境的PATH增加OpenSSL的bin文件完整目录
- 测试运行
OpenSSL命令行使用
证书签发
流程
第一步:生成客户端的公私钥对。
第二步:以客户端的密钥和客户端自身的信息,生成证书请求文件。
第三步:CA机构接收到客户端的证书请求文件后,首先校验其签名,然后审核客户端的信息,最后CA机构使用自己的私钥为证书请求文件签名,生成证书文件并下发。
-
修改\OpenSSL-Win64\bin\openssl.cfg配置文档
-
根据配置文档新建目录、文件
-
打开CA_default的目录,构造伪随机数
-
构建根证书密钥(也就是成客户端的公私钥对),生成2048位的rsa密钥,且aes加密保护
-
申请签发证书
-
签发证书
OpenSSL命令行查看证书
-
查看pem格式证书
-
查看der格式证书
-
查看网页证书
OpenSSL实现证书格式转换
-
证书格式转换大致有以下几种情况
- 编码转换:DER<-->BASE64
(DER本身是ASN.1编码,Base64的CER也可以称为PEM编码,二进制的CER可以称为是DER编码。) - 不同证书标准的转换:PKCS系列<-->PEM/CER
- 私钥的增/减/提取/转换
- 编码转换:DER<-->BASE64
-
编码转换代表:DER->PEM、PEM->DER
-
不同证书类型:PEM->PKCS#7、PKCS#7->PEM
-
密钥的提取