理解OpenSSL、x509、crt、cer、key、csr、ssl、tls
基本概念
-
TLS:传输层安全协议 Transport Layer Security的缩写
-
SSL:安全套接字层 Secure Socket Layer的缩写
-
KEY:通常指私钥
-
CSR:Certificate Signing Request的缩写,即证书签名请求,可以简单理解成公钥,生成证书时需要提交给权威的证书颁发机构
-
CRT:Certificate的缩写,即证书
-
X.509:是一种证书格式。对X.509证书来说,认证者总是CA或由CA指定的人,X.509证书是一些标准字段的集合,包含有关用户或设备及其相应公钥的信息
X.509的证书文件:一般以.crt结尾,根据该文件的内容编码格式,可以分为以下两种格式:
PEM - Privacy Enhanced Mail,打开看文本格式,以"-----BEGIN..."开头,"-----END..."结尾,内容是BASE64编码。Apache和Nginx服务器偏向于使用这种编码格式。
DER - Distinguished Encoding Rules,打开看是二进制格式,不可读。Java和Windows服务器偏向于使用这种编码格式。
- OpenSSL:相当于SSL的一个实现,如果把SSL规范看成OO中的接口,那么OpenSSL则认为是接口的实现。接口规范本身是安全没问题的,但是具体实现可能会有不完善的地方,比如之前的"心脏出血"漏洞,就是OpenSSL中的一个bug
OpenSSL 给自己颁发证书的步骤
- 1.生成私钥KEY
生成server.key文件
# openssl genrsa -des3 -out server.key 2048
- 2.生成证书请求文件CSR
生成server.csr文件
# openssl req -new -key server.key -out server.csr
进入交互模式填写信息,需要注意的是 Common Name
字段要填写成使用SSL证书(即:https协议)的域名或主机名,否则浏览器会认为不安全。例如:如果以后打算使用https://www.appblog.cn,这里就填写www.appblog.cn
- 3.生成CA的证书
前面提过X.509证书的认证者总是CA或由CA指定的人,所以得先生成一个CA的证书
生成ca.crt文件
# openssl req -new -x509 -key server.key -out ca.crt -days 3650
- 4.最后使用CA证书给自己颁发一个证书
生成server.crt文件
# openssl x509 -req -days 3650 -in server.csr \
-CA ca.crt -CAkey server.key \
-CAcreateserial -out server.crt
如果要在Chrome等浏览器显示出安全的绿锁标志,自己颁发的证书肯定不好使,得花钱向第三方权威证书颁发机构申请(即:第4步是交给权威机构来做,我们只需要提交server.key、server.csr,还有费用)
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/25/understand-openssl-x509-crt-cer-key-csr-ssl-tls/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论