03月15, 2018

CentOS7下使用Let's Encrypt申请免费的通配符SSL证书

2018年3月14日,Let’s Encrypt宣布ACME v2正式支持通配符证书,这就意味着可以在 Let’s Encrypt 上申请到免费的通配符SSL证书,本文就讲述如何使用Let's Encrypt申请免费的通配符SSL证书 :

1、通配符证书介绍及申请须知

①、通配符证书介绍:

通配符证书就是证书中可以包含一个通配符,类似DNS解析中的泛解析概念,主域名签发的通配符证书可以在所有子域名中使用,比如www.example.comapi.example.comxx.example.com

②、申请须知:

Let’s Encrypt 上的证书申请是通过 ACME 协议来完成的,ACME v2 是 ACME 协议的更新版本,通配符证书只能通过 ACME v2 获得。要使用 ACME v2 协议申请通配符证书,需要一个支持该协议的客户端,官方推荐的客户端是 Certbot,关于Certbot的使用,可参考:Certbot官网,需要注意的是:Certbot从0.22.0版本才开始支持ACME v2,如果你之前已安装旧版本,请更新至0.22.0+版本

2、安装证书申请客户端Certbot

使用如下命令(本机CentOS7):

sudo yum -y install certbot

查看Certbot版本:

certbot --version

得到结果如下:

certbot 0.22.0

说明本机安装的Certbot支持通配符证书申请

3、申请证书

①执行申请命令:

certbot certonly -d "*.yourdomain,yourdomain" --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory

注意:请将示例中使用的*.yourdomainyourdomain替换为自己的域名,同时使用*.yourdomainyourdomain是为了使生成的SSL证书同时支持根域名(abc.com)和二级域名(x.abc.com),请看第②步的图

②、输入用来接收证书到期和其它提醒的邮箱: 命令及邮箱输入

③、同意申请协议: 同意申请协议

④、同意接收Let's的产品邮件: 同意接收产品邮件

⑤、同意记录服务器IP: 同意记录服务器IP

⑥、修改域名的DNS: 修改域名DNS

注意: 显示上图内容时先不要按回车,需要先给申请SSL证书的域名添加DNS解析记录,添加内容如下:

记录类型 主机记录 记录值
   TXT     _acme-challenge 上图中生成的字符串

添加完成之后使用如下方法确认已经生效:

dig  -t txt _acme-challenge.yourdomain

如果显示结果与第⑥步生成的字符串一致,如下图所示: TXT记录查询

⑦、生成证书:

如果上面步骤正确,则回到命令行按下回车开始生成证书,证书生成结果如下: 证书生成

⑧、查看申请的证书:

ll /etc/letsencrypt/live/yourdomain/

结果如下:

证书列表

⑨、检查证书:

openssl x509 -in  /etc/letsencrypt/live/youdomain/cert.pem -noout -text  | grep "DNS*"

显示结果如下图: DNS列表

上图结果表示:生成的SSL证书可以同时用于根域名(yourdomain)和二级域名(*.yourdomain)

4、证书更新

Let’s encrypt 的免费证书默认有效期为 90 天,到期后如果要续期可以执行:

certbot  renew

5、Nginx配置SSL

Nginx中配置SSL证书实现HTTPS:

server {
    server_name yourdomain;
    listen 443 ssl;
    add_header Strict-Transport-Security "max-      age=31536000;includeSubdomains; preload;";
    ssl_certificate /etc/letsencrypt/live/yourdomain/cert.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!LOW:!aNULL:!eNULL;
    ssl_session_cache    builtin:1000 shared:SSL:20m;
    ssl_session_timeout  20m;
    location / {

    }
}

以上就是使用Let's申请通配符证书的过程。

本文链接:https://www.shaobin.wang/post/11.html

Comments