理解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,还有费用)

上一篇 OpenSSL生成RSA公私钥
下一篇 pkcs1与pkcs8格式RSA私钥互相转换
目录
文章列表
1 Android Support Library Packages
Android Support Library Packages
2
ElasticSearch 7 搜索(12)query_string 查询
ElasticSearch 7 搜索(12)query_string 查询
3
Atlas加载bundle插件总结:ViewGroup中加载及本地startActivity方式
Atlas加载bundle插件总结:ViewGroup中加载及本地startActivity方式
4
Java方法内联
Java方法内联
5
如何在 ConstraintLayout 中设置负值的 Margin
如何在 ConstraintLayout 中设置负值的 Margin
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。