一文通晓https

一.基础术语缩写解释
>TLS:传输层安全协议 Transport Layer Security的缩写

>SSL:安全套接字层 Secure Socket Layer的缩写

>CRT:即 certificate的缩写,即证书

>X.509:是一种证书格式.对X.509证书来说,认证者总是CA或由CA指定的人,一份X.509证书是一些标准字段的集合,这些字段包含有关用户或设备及其相应公钥的信息

X.509的证书文件,一般以.crt结尾,根据该文件的内容编码格式,可以分为以下二种格式:
1>PEM - Privacy Enhanced Mail,打开看文本格式,以"-----BEGIN..."开头, "-----END..."结尾,内容是BASE64编码.
Apache和*NIX服务器偏向于使用这种编码格式.

2>DER - Distinguished Encoding Rules,打开看是二进制格式,不可读.
Java和Windows服务器偏向于使用这种编码格式

>OpenSSL:相当于SSL的一个实现

>CSR是Certificate Signing Request的缩写,即证书签名请求文件。
是证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件,证书申请者只要把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的证书。
文件中通常包括主题、组织、状态、公钥等相关信息。
实际格式为PKCS10,在RFC 2986中定义

二.openssl 给自己颁发证书的步骤(如下方式生成的证书,已经在阿里云上传成功):
1. 生成私钥KEY
openssl genrsa  -out server.key 2048
备注:千万不能加上“-des3” 参数,阿里云不认

-des3,表示加密私钥文件,用des3算法
doushadeMacBook-Pro:teest cl$ openssl genrsa --help
usage: genrsa [args] [numbits]
 -des            encrypt the generated key with DES in cbc mode
 -des3           encrypt the generated key with DES in ede cbc mode (168 bit key)

2. 生成证书请求文件CSR(请求文件指的是向证书机构申请正式文件时候需要提交的文件)
openssl req -new -key server.key -out server.csr
注意:Common Name这里,要填写成使用SSL证书(即:https协议)的域名或主机名,否则浏览器会认为不安全。例如:如果以后打算用https://yjm-docker/xxx 这里就填写yjm-docker

3.生成CA的证书
前面提过X.509证书的认证者总是CA或由CA指定的人,所以得先生成一个CA的证书
openssl req -new -x509 -key server.key -out ca.crt -days 36500

4.最后用第3步的CA证书给自己颁发一个证书玩玩
openssl x509 -req -days 3650 -in server.csr \
  -CA ca.crt -CAkey server.key \
  -CAcreateserial -out server.crt
执行完以后,cert目录下server.crt 


5.正式机构申请证书
就是我们需要的证书。当然,如果要在google等浏览器显示出安全的绿锁标志,自己颁发的证书肯定不好使,得花钱向第三方权威证书颁发机构申请(即:第4步是交给权威机构来做,我们只需要提交server.key、server.csr)


三.证书格式
.DER .CER,文件是二进制格式,只保存证书,不保存私钥。
.PEM,一般是文本格式,可保存证书,可保存私钥。
.CRT,可以是二进制格式,可以是文本格式,与 .DER 格式相同,不保存私钥。
.PFX .P12,二进制格式,同时包含证书和私钥,一般有密码保护。
.JKS,二进制格式,同时包含证书和私钥,一般有密码保护。

1>DER
该格式是二进制文件内容,Java 和 Windows 服务器偏向于使用这种编码格式。
OpenSSL 查看der证书:
openssl x509 -in certificate.der -inform der -text -noout

2>PEM
Privacy Enhanced Mail,一般为文本格式,以 -----BEGIN... 开头,以 -----END... 结尾。中间的内容是 BASE64 编码。这种格式可以保存证书和私钥,有时我们也把PEM 格式的私钥的后缀改为 .key 以区别证书与私钥。具体你可以看文件的内容。

这种格式常用于 Apache 和 Nginx 服务器。

OpenSSL 查看:
openssl x509 -in certificate.pem -text -noout
转换为 DER:
openssl x509 -in cert.crt -outform der -out cert.der

3>CRT
Certificate 的简称,有可能是 PEM 编码格式,也有可能是 DER 编码格式。如何查看请参考前两种格式。

4>PFX
公钥加密技术12号标准(Public Key Cryptography Standards #12,PKCS#12)为存储和传输用户或服务器私钥、公钥和证书指定了一个可移植的格式。它是一种二进制格式,这些文件也称为PFX文件


5>JKS
Java Key Storage,很容易知道这是 JAVA 的专属格式,利用 JAVA 的一个叫 keytool 的工具可以进行格式转换。一般用于 Tomcat 服务器。

证书相关扩展名文件含义
1>.key
这是一个只包含私钥的pem格式的文件。在Apache相关应用中,通常被存放在/etc/ssl/private目录下。这些证书的正确性相当重要,如果有错误,一些应用将拒绝加载这些证书文件。

2>.der
pem是base64编码格式的文件,而der文件格式相当于pem格式的二进制版本。主要是Windows中使用。
DER文件为主要与primarily DER Encoded X509 Certificate相关联的Web Files 

3>.cert .cer .crt
即pem格式的文件,只不过文件名后缀不同

4>.p7b .keystore
在RFC 2315中定义,PKCS 7,这种格式被Windows用来进行证书交换。Java原生能够理解这种格式,并且常用.keystore作为后缀。不像.pem方式的证书,这种格式定义了方式去包含证书路径

5>.crl
CRL是Certificate revocation list的缩写。
证书撤销列表文件。证书机构在证书失效前,采用这种文件格式去撤销认证。有时你可以从CA的网站上下载它们

6.pkcs12 .pfx .p12
PKCS是Public-Key Cryptography Standards的缩写。
这是一个加密过的,包含了公钥和私钥对的文件格式。不像.pem文件,该文件格式是完全加密的.
OpenSSL可以将该文件转换为包含公钥和私钥的pem文件:openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes

你可能感兴趣的:(安全技术)