关于ssl:如何自动申请免费的SSL-证书

42次阅读

共计 1829 个字符,预计需要花费 5 分钟才能阅读完成。

上次介绍了如何通过第三方网站申请收费的 SSL 证书,但有效期只有三个月,三个月之后又须要再次申请,记得还好,如果忘了可能还会造成不必要的损失。

Let’s Encrypt 是一个收费提供的 SSL 证书的 CA,尽管每次签发的有效期都只有三个月,然而发证是自动化的,发证速度较快,并且能够通过脚本来主动续签,为集体网站应用 HTTPS 提供了一个不错的抉择。

Let’s Encrypt(以下简称 LE)的证书签发次要应用基于 ACME 协定 的证书主动治理客户端来实现。

LE 官网举荐的客户端是 Certbot,本文中就是应用 Certbot 来获取和续签证书。

LE 是如何主动签发证书的

假如当初要申请 CA 证书的域名是 example.com

首先由 WebServer(也就是咱们用户端的服务器)的治理客户端(如 Certbot)发送申请到 LE,让 LE 来验证客户端是否真的管制 example.com 这个域名,接下来 LE 会提出一些验证动作(原文 challenges),比方让客户端在一个很显著的门路上放指定的文件。同时,LE 还会收回一个随机数,客户端须要用这个随机数和客户端本人的私钥来进行签名。

WebServer 上的客户端实现 LE 指定的域名验证动作并且将加密后的签名后,再次发送申请到 LE 要求验证,LE 会验证发回来的签名是否正确,并且验证域名验证动作是否实现,如下载指定的文件并且判断文件外面的内容是否符合要求。

这些验证都实现当前,能够申请证书了。

实现验证后,客户端生成本人的私钥以及 Certificate Signing Request(CSR)发送到 LE 服务器,LE 服务器会将 CA 证书(也是公钥)发放到你的服务器。

这样就实现了 CA 证书的自动化发放了。

应用 Certbot 获取证书

LE 的 CA 证书发放原理看着还挺麻烦的,但如果应用 Certbot 客户端,整个过程还是挺简略的。

在正式获取证书之前,举荐先去 Certbot 官网抉择适宜本人的零碎环境。

我这边零碎环境是Nginx + Ubuntu 18.04 LTS,所以上面介绍的装置流程只实用于Ubuntu + Nginx

1. 装置 snap

snap) 是 Canonical 公司公布的全新的软件包治理形式,它相似一个容器领有一个应用程序所有的文件和库,各个应用程序之间齐全独立。应用 snap 包的益处就是它解决了应用程序之间的依赖问题,使应用程序之间更容易治理。然而由此带来的问题就是它占用更多的磁盘空间。

$ sudo apt update
$ sudo apt install snapd

2. 装置 certbot

在装置 Certbot 之前,最好先移除历史快照。

$ sudo apt-get remove certbot

进行装置:

$ sudo snap install --classic certbot

3. 生成证书

装置实现之后,下一步须要做的就是生成证书了,这里有两种形式:

  1. 生成证书并主动配置
$ sudo certbot --nginx
  1. 生成证书手动配置
$ sudo certbot certonly --nginx

我抉择的是手动配置,大略流程如下:

  1. 输出罕用邮箱,用来接管告诉和复原密钥。
  2. 批准应用协定。
  3. 输出须要做受权的域名,多个域名用空格隔开。
  4. 期待验证通过。

如果其中某个域名验证失败,则不会生成明码。

一切正常的话,能够看到 /etc/letsencrypt/live/your_sites/ 目录下多了四个文件:

  • cert.pem:公钥,服务器证书
  • chain.pem:两头证书
  • fullchain.pem:前两个的合集
  • privkey.pem:私钥

其中配置 Nginx SSL 只须要用到fullchain.pemprivkey.pem

server {
    listen       443 ssl;
    server_name www.example.com;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/www.exampl.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
    ...
}

至此,就曾经实现了生成证书到配置的全副过程了。

主动续签

如果快要到期了,能够应用 certbot renew 对证书进行更新,须要留神的是,如果证书尚未过期,则不会更新。

能够配合 conrtab 应用,每半个月的凌晨三点主动续签一次。

$ 0 3 15 * * certbot renew 

参考链接

  • Let’s Encrypt 收费 SSL 证书获取以及主动续签

正文完
 0