Let's Encrypt免费SSL证书申请流程

一、什么是 Let’s Encrypt?

部署 HTTPS 网站的时候需要证书,证书由 CA 机构签发,大部分传统 CA 机构签发证书是需要收费的,这不利于推动 HTTPS 协议的使用。

Let’s Encrypt 也是一个 CA 机构,但这个 CA 机构是免费的!!!也就是说签发证书不需要任何费用。

ACME 协议规范化了证书申请、更新、撤销等流程,只要一个客户端实现了该协议的功能,通过客户端就可以向 Let’s Encrypt 申请证书,也就是说 Let’s Encrypt 完全是自动化操作的。任何人都可以基于 ACME 协议实现一个客户端,官方推荐的客户端是Certbot

二、什么是通配符证书

在没有出现通配符证书之前,Let’s Encrypt 支持两种证书。

1)单域名证书:证书仅仅包含一个主机。

2)SAN 证书:一张证书可以包括多个主机(Let’s Encrypt 限制是 20),也就是证书可以包含下列的主机:www.example.com、www.example.cn、blog.example.com 等等。

证书包含的主机可以不是同一个注册域,不要问我注册域是什么?注册域就是向域名注册商购买的域名。

三、Let’s Encrypt 通配符证书

通配符证书就是证书中可以包含一个通配符,比如 .example.com、.example.cn,读者很快明白,大型企业也可以使用通配符证书了,一张证书可以防止更多的主机了。

四、申请 Let’s Encrypt 单域名/SAN证书

  • 获取letsencrypt

~# git clone https://github.com/letsencrypt/letsencrypt

  • 进入letsencrypt目录

~# cd letsencrypt

  • 生成证书

需先停止使用80端口的程序,支持 -d 同时指定多个域名
~# ./letsencrypt-auto --help
~# ./letsencrypt-auto certonly --standalone --email jinqilin721@163.com -d www.xinac.com -d www.xinac.cn

  • 配置nginx

ssl_certificate /etc/letsencrypt/live/www.xinac.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.xinac.com/privkey.pem;

  • 证书更新/续期

方式一(自动续期所有证书):
~# ./letsencrypt-auto renew --force-renew

方式二(仅续期指定证书,有多个域名时适用):
~# ./letsencrypt-auto certonly --renew-by-default --email jinqilin721@163.com -d www.xinac.com -d www.xinac.cn

方式三(crontab定时任务自动续期):
~# crontab -e 0 0 1 */2 * /root/ssl/letsencrypt-auto renew --force-renew(每2月更新一次)

注意:
1、每次申请或续期后,可用90天
2、不要每天都去续期,续期的次数是有限制的,太频繁会失败
3、每月续期一次最佳,续期后注意检查到期时间
4、续期不是100%成功的,注意失败时及时手工处理

五、申请 Let’s Encrypt 通配符证书

注意:申请通配符证书只能通过DNS的方式!每次申请/续期都需要DNS解析!

  • 进入letsencrypt目录

~# cd letsencrypt

  • 生成证书

~# ./certbot-auto certonly -d *.xinac.cn --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory
- 是否同意 Let's Encrypt 协议要求
- 询问是否对域名和机器(IP)进行绑定
- 过程中需要按提示配置DNS TXT解析
- DNS解析成功后,再按回车继续
- 如果提示成功(Congratulations!),会显示证书路径,加入nginx配置即可

参数介绍:
certonly,表示安装模式,Certbot 有安装模式和验证模式两种类型的插件。
--manual 表示手动安装插件,Certbot 有很多插件,不同的插件都可以申请证书,用户可以根据需要自行选择
-d 为那些主机申请证书,如果是通配符,输入 *.xinac.cn(可以替换为你自己的域名),可同时指定多个
--preferred-challenges dns,使用 DNS 方式校验域名所有权
--server,Let's Encrypt ACME v2 版本使用的服务器不同于 v1 版本,需要显式指定。

  • 配置nginx

ssl_certificate /etc/letsencrypt/live/xinac.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/xinac.cn/privkey.pem;

  • 证书更新/续期

~# certbot-auto renew

  • 自动化续期

https://github.com

六、申请 Let’s Encrypt 通配符证书(官方教程)

下载certbot: https://github.com/certbot/certbot/releases

官网安装说明:https://certbot.eff.org/docs/install.html

  • 安装步骤

~# wget https://dl.eff.org/certbot-auto
~# sudo mv certbot-auto /usr/local/bin/certbot-auto
~# sudo chown root /usr/local/bin/certbot-auto
~# sudo chmod 0755 /usr/local/bin/certbot-auto
~# /usr/local/bin/certbot-auto --help

  • 安装命令

~# /usr/local/bin/certbot-auto certonly -d *.cary.tech -d cary.tech -d *.cary.net.cn -d cary.net.cn --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory

  • 更新证书

~# /usr/local/bin/certbot-auto renew

  • 证书路径

/etc/letsencrypt/live/cary.tech/fullchain.pem
/etc/letsencrypt/live/cary.tech/privkey.pem

  • Q/A

certbot virtualenv报错?
A:python2.7默认没有pip,安装pip即可
~# curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
~# python get-pip.py

-- 部分内容转自简书:
https://www.jianshu.com/p/c5c9d071e395

# HTTPS  SSL 
最后编辑时间:2020-04-02 13:55:25

本文由 新逸Cary 创作,如果您觉得本文不错,请随意赞赏
采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
原文链接:https://blog.xinac.cn/archives/letsencrypt免费ssl证书申请流程
最后更新:2020-04-02 13:55:25

评论

Your browser is out of date!

Update your browser to view this website correctly. Update my browser now

×