美文网首页
Let's Encrypt介绍

Let's Encrypt介绍

作者: 富多多 | 来源:发表于2020-04-06 17:48 被阅读0次

什么是Let's Encrypt

【现状】Let’s Encrypt 是一家免费、开放、自动化的证书颁发机构(CA),为公众的利益而运行。它是一项由 Internet Security Research Group(ISRG)提供的服务。我们以尽可能对用户友好的方式免费提供为网站启用 HTTPS(SSL/TLS)所需的数字证书。这是因为我们想要创建一个更安全,更尊重隐私的 Web 环境。
【为什么要做】任何拥有域名的人都可以使用 Let’s Encrypt 免费获取受信的证书,

CA介绍

CA是Certificate Authority的缩写,也叫“证书授权中心”,就是负责管理和签发证书的第三方机构。

证书解决的信任问题是什么

借用网上一位同学的例子:假如你供职于X公司,老板让你去拜访A公司老总谈点业务,此时你直接去可能前台MM给你挡住了,因为没人认识你,那怎么办?你发现C公司跟A公司业务往来密切,你对C公司也熟悉,你就去找C公司的老板给你写了封介绍信并且盖上C公司章,然后你拿着介绍信去A公司,把介绍信给前台MM一看,前台MM一看C公司的章就信任你了,就让你去拜访了。证书就是介绍信,通过盖章的方式来解决信任问题。

数字签名

简而言之: 发信人对内容进行hash 计算,得到内容摘要(digest)–> 发信人对摘要使用私钥加密,生成”数字签名”(signature) –> 内容附上数字签名,一起发送。

发送前签名

身份验证过程:

接收方校验

数字证书

内容:含有公钥,及公钥拥有者的身份。
作用:1. 证明证书中的公钥 就是信件发送者的的公钥 ; 2. 用通过认证的公钥解密内容
特点:1. 第三方权威机构颁发;2. 具有有效期
数字证书使用
由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名后形成的一个数字文件,生成”数字证书”(Digital Certificate);

A 在发送信件给B的时候,同时附上签名和证书;

B 用CA的公钥解开数字证书,就可以拿到A 的真实公钥了,然后就能证明”数字签名”的是否属A。

前文说到,用数字签名的方式 发送信件也是有一定风险的。比如公钥被替换,无法知晓公钥的来源或公钥对应的私钥的持有者身份。于是,数字证书便有了它的作用。

证书怎么解决信任问题

  • 找一个权威的证书颁发机构,发出第一个ROOT证书
  • 所有人都信任根证书
  • 根证书可以颁发其信任的下级证书
  • 下级证书继续颁发下级构成证书树状结构
  • 规定在整证书链上有个信任的节点,就信任此证书
证书树

Let’s Encrypt 是一个证书颁发机构(CA)。要从 Let’s Encrypt 获取您网站域名的证书,您必须证明您对域名的实际控制权。您可以在您的 Web 主机上运行使用 ACME 协议的软件来获取 Let’s Encrypt 证书。

HTTPS,SSL,证书关系

  • HTTPS是通过HTTP + SSL组成
  • SSL的实现是通过安装数字证书来实现
  • CA签发数字证书
  • 数字证书包含了加解密的算法
  • 数字证书用于建立信任并且分发公钥
    下图为x.509证书的结构
X.509数字证书结构

如何制作证书

选择加解密算法-RAS

RAS一种非对称加密算法,公钥(PK)加密,私钥(SK)解密,虽然SK是由PK决定的,但是大数分解计算量太大,无法穷举破解,所以被认可。但是随着量子计算的产生,对其安全性将构成威胁,RAS百科

通过openSSL制作证书

在说明证书制作过程前,先说明制作证书时,用到的几类文件的作用
.key 文件:私钥
.csr 文件:证书签名请求文件,含有公钥信息,certificate signing request的缩
.crt 文件:用.csr 生成的证书文件,certificate的缩写,这就是数字证书

生成自签名根证书。就是模仿证书权威机构的作用,给用户提供一个权威机构的根证书。在真实场景中,根证书是CA认证中心给自己颁发的证书,是信任链的起始点。任何安装CA根证书的服务器都意味着对这个CA认证中心是信任的。是信任链的起始点。任何安装CA根证书的服务器都意味着对这个CA认证中心是信任的。

生成CA 的私钥 openssl genrsa -out ca.key 2048

生成CA 证书请求文件 openssl req -new -key ca.key -out ca.csr

生成CA证书 openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

使用Let's证书 + Nginx搭建HTTPS服务器

  • certbot生成证书文件
    certbot certonly --standalone --preferred-challenges http-01 -d example.lopetech.net
  • 配置nginx
 server {
      listen       443 ssl;   #指定ssl监听端口
      server_name  example.lopetech.net;
      #ssl on;    #开启ssl支持
      ssl_certificate      /etc/letsencrypt/live/example.lopetech.net/fullchain.pem;
      ssl_certificate_key /etc/letsencrypt/live/example.lopetech.net/privkey.pem;
      ssl_session_timeout  5m;
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;     #指定SSL服务器端支持的协议版本
      ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;    #指定加密算法
      ssl_prefer_server_ciphers   on;    #在使用SSLv3和TLS协议时指定服务器的加密算法要优先于客户端的加密算法
}

相关文章

网友评论

      本文标题:Let's Encrypt介绍

      本文链接:https://www.haomeiwen.com/subject/gppwdhtx.html