协议与实现
- SSL/TLS
- OpenSSL 是
SSL/TLS
的一个实现
证书标准
- X.509 是一种证书的标准,里面定义了证书里应该包含哪些内容。参考RFC5280, SSL是按照这个标准实现的。
证书的编码格式
X.509
证书目前有以下2中证书格式,一种是文本类型
,一种是二进制类型
。
- PEM privacy enhanced mail, 是一种文本格式。打开文件看是以
-----BEGIN
开头,以-----END
结尾,内容用BASE64编码。这类是apache, *NIX系统偏爱的格式。可以使用下面命令查看证书内容openssl x509 -in certificate.pem -text -noout
。 - DER distinguished encoding rules是一种二进制格式。可用下面命令查看证书内容
openssl x509 -in certificate.der **-inform der** -text -noout
。java和win偏好这种格式。
相关文件扩展名
- CRT 证书(certificate)的一种,常见*NIX系统。可能是PEM或者DER格式。大多是PEM文本编码。
- CER 也是certificate缩写。常见win系统。大多是DER二进制编码。
- KEY 非X.509证书。常用来存放一个公钥或者私钥。编码可以是PEM或者DER。查看PEM格式key
openssl rsa -in mykey.key -text -noout
查看DER格式key:openssl rsa -in mykey.key -text -noout -inform der
- CSR certificate signing request。证书签名请求。向权威机构请求颁发一个签名证书的申请文件。内部包含了一个公钥和其他信息。随着公钥还有个私钥要自己保存好。查看方法
openssl req -noout -text -in my.csr
如果是DER则在命令后面加入 -inform der - JKS
- PFX/P12
几个场景
-
PEM转DER
openssl x509 -in cert.crt -outform der -out cert.der
-
DER转PEM
openssl x509 -in cert.crt -inform der -outform pem -out cert.pem
要转换KEY文件也类似,只不过把x509换成rsa,要转CSR的话,把x509换成req…
-
向权威证书颁发机构申请证书 生成一个csr:
openssl req -newkey rsa:2048 -new -nodes -keyout my.key -out my.csr
然后把csr交给权威证书颁发机构,权威证书颁发机构对此进行签名。保留好csr,当权威证书颁发机构颁发的证书过期的时你还可以用同样的csr来申请新的证书,key保持不变 -
生成自签名的证书
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
在生成证书的过程中会要你填一堆的东西,其实真正要填的只有Common Name,通常填写你服务器的域名,如”yourcompany.com”,或者你服务器的IP地址,其它都可以留空