https使用证书加密,涉及到几个名词:SSL、X.509、PEM、DER、CRT、CER、KEY、CSR等。
SSL
http协议默认情况下不加密传输内容,导致如果数据包被拦截,数据就会泄露,对于某些安全性要求较高的场合,就一定要加密,https就是一种基于SSL带加密的http协议。
OpenSSL
OpenSSL是SSL的一个实现方式,SSL是一种规范。
证书标准
X.509
证书标准的一种,定义了证书需要包含哪些内容。
编码格式(PEM、DER)
PEM Privacy Enhanced Mail,以-----BEGIN CERTIFICATE-----开头,-----END CERTIFICATE-----结尾,内容BASE64编码。
DER Distinguished Encoding Rules,二进制不可读。
相关文件
CRT certificate,linux系统,证书,可能是pem或者der格式。
CER certificate windows系统,证书。
KEY 通常用来存放一个公钥或私钥,并非X.509证书。
PEM KEY: openssl rsa -in key.key -text -noout
DER KEY: openssl rsa -in key.key -text -noout -inform der
CSR Certificate Signing Request,证书签名请求。
openssl req -noout -text -in csr.csr
openssl req -noout -text -in csr.csr -inform der
证书编码转换
PEM 2 DER:openssl x509 -in cert.crt -outform der -out cert.der
DER 2 PEM:openssl x509 -in cert.crt -inform der -outform pem -out cert.pem
获取证书
使用命令生成csr
openssl req -newkey rsa:2048 -new -nodes keyout my.key -out my.csr
自己签名的证书
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
过程中实际有用的只有Common name,填写服务器域名或者ip。