理解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全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
理解OpenSSL、x509、crt、cer、key、csr、ssl、tls
基本概念 TLS:传输层安全协议 Transport Layer Security的缩写 SSL:安全套接字层 Secure Socket Layer的缩写 KEY:通常指私钥 CSR:Certificate ……
<<上一篇
下一篇>>
文章目录
关闭
目 录