SSL 证书提供了一种在互联网上身份验证的方式,是用来标识和证明通信双方身份的数字信息文件。使用SSL 证书的网站,可以保证用户和服务器间信息交换的保密性,具有不可窃听、不可更改、不可否认、不可冒充的功能。
SSL证书由浏览器中“受信任的根证书颁发机构”在验证服务器身份后颁发,具有网站身份验证和加密传输双重功能.
SSL工具箱:https://www.myssl.cn/tools/
常见证书格式及相互转化
PKCS#7:Cryptographic Message Syntax Standard
PKCS#10:Certification Request Standard
PKCS#12:Personal Information Exchange Syntax Standard
X.509:是常见通用的证书格式。所有的证书都符合为Public Key Infrastructure (PKI) 制定的 ITU-T X509 国际标准。
PKCS#7:常用的后缀是: .P7B .P7C .SPC
PKCS#12:常用的后缀有: .P12 .PFX
X.509:DER 编码(ASCII)的后缀是: .DER .CER .CRT
X.509:PAM 编码(Base64)的后缀是: .PEM .CER .CRT
.cer/.crt:是用于存放证书,它是2进制形式存放的,不含私钥。
.pem:跟crt/cer的区别是它以Ascii来表示。
pfx/p12:用于存放个人证书/私钥,他通常包含保护密码,2进制方式
p10:是证书请求
p7r:是CA对证书请求的回复,只用于导入
p7b:以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥。
openssl常用命令
将DER
文件(.crt .cer .der
)转换为PEM
1 | openssl x509 -inform der -in certificate.cer -out certificate.pem |
将PEM
文件转换为DER
1 | openssl x509 -outform der -in certificate.pem -out certificate.der |
将包含私钥和证书的PKCS#12
文件(.pfx .p12
)转换为PEM
1 | openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes |
将PEM
证书文件和私钥转换为PKCS#12(.pfx .p12)
1 | openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt |
PEM格式的ca.key转换为Microsoft可以识别的pvk格式。
1 | pvk -in ca.key -out ca.pvk -nocrypt -topvk |
从 PFX 格式文件中提取私钥格式文件 (.key)
1 | openssl pkcs12 -in mycert.pfx -nocerts -nodes -out mycert.key |
将PKCS#8编码的私钥转化成PKCS#1编码
1 | openssl rsa -in privkey.pem -out privkey-rsa.pem |
获取服务器的证书
1 | openssl s_client -host api.mailgun.net -port 443 -prexit -showcerts |
使用openssl测试双向认证
1 | openssl s_client -connect test.com:443 -cert device.pem -key device.key -CAfile trusted-chain.pem |