各种数字证书的格式总结.
1.证书编码方式分类
1.二进制编码 DER
常见的二进制编码后缀内容如CER,CRT
2.BASE64方式编码 PEM
常见的ASCII编码后缀内容如PEM
2.证书包含内容分类
1.只保存公钥内容
2.只保存私钥内容
3.公钥和私钥并存
3.证书文件类型
1.PEM-Privacy Enhanced Mail ;
内容信息以BASE64存储编码DER格式数据,同时证书内容通常以----BEGIN XXXX----- 开始,并且以----END XXXX----结束.PEM和DER格式可以相互转换,主要区别为DER为二进制保存,而PEM以BASE64保存.
PEM格式存储的证书
—–BEGIN CERTIFICATE—–
—–END CERTIFICATE—–
PEM格式存储的私钥
—–BEGIN RSA PRIVATE KEY—–
—–END RSA PRIVATE KEY—–
PEM格式存储的证书请求文件
—–BEGIN CERTIFICATE REQUEST—–
—–END CERTIFICATE REQUEST—–
2.DER – 辨别编码规则 (DER) 可包含所有私钥、公钥和证书;
3.PFX或P12 – 公钥加密标准 #12 (PKCS#12) 可包含所有私钥、公钥和证书;
4.JKS通常可以将Apache/OpenSSL使用的“KEY文件 + CRT文件”格式”转换为标准的Java Key Store(JKS)文件;
5.KDB–通常可以将Apache/OpenSSL使用的“KEY文件 + CRT文件”格式转换为标准的IBM KDB文件;
6.CSR-证书请求文件(Certificate Signing Request).生成 X509 数字证书前,一般先由用户提交证书申请文件,然后由 CA 来签发证书;
1.用户生成请求证书文件,其中包含了用户信息,公钥内容,同时还包含用户使用私钥签名的内容.
2.用户将证书申请文件提交给CA;
3.CA使用公钥验证签名内容,提取用户信息并且使用CA私钥签发数字证书.
4.X509证书包含内容:证书版本、证书序列号、签名算法、颁发者信息、有效时间、持有者信息、公钥信息、颁发者 ID、持有者 ID 和扩展项
4.openssl制作CA证书
以下生成的文件CSR和CRT以及KEY都是PEM编码格式的.
1.创建根证书秘钥文件
root.key: openssl genrsa -out root.key -aes256 2048
2.创建根证书的申请文件
root.csr openssl req -new -key root.key -out root.csr
3.创建一个自当前日期起为期十年的根证书root.crt:
openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey root.key -in root.csr -out root.crt
4.创建服务器证书密钥server.key
openssl genrsa -out server.key -aes256 2048
5.创建服务器证书的申请文件server.csr:
openssl req -new -key server.key -out server.csr
6.创建自当前日期起有效期为期两年的服务器证书server.crt:
openssl x509 -req -days 730 -sha1 -extensions v3_req -CA root.crt -CAkey root.key -CAserial root.srl -CAcreateserial -in server.csr -out server.crt
7.创建客户端证书密钥文件client.key:
openssl genrsa -out client.key -aes256 2048
8.创建客户端证书的申请文件client.csr:
openssl req -new -key client.key -out client.csr
9.创建一个自当前日期起有效期为两年的客户端证书client.crt:
openssl x509 -req -days 730 -sha1 -extensions v3_req -CA root.crt -CAkey root.key -CAserial root.srl -CAcreateserial -in client.csr -out client.crt
10.将客户端证书文件client.crt和客户端证书密钥文件client.key合并成客户端证书安装包client.pfx
openssl pkcs12 -export -in client.crt -inkey client.key -out client.pfx