CentOS7 下通配符 SSL 证书的购买和配置

一个边缘服务涉及到的服务器和子域名实在太多,自签证书在每个服务器上都配置一遍想想就觉得麻烦,而且有些子域名需要暴露给外部访问,在用户机器人上安装证书也不太现实,索性购买下通配符证书来解决吧。


1、证书的购买
选择在 Namecheap 上进行购买,链接:https://www.namecheap.com/security/ssl-certificates/,注意需要选择 Wildcard 类型的证书:
证书

两年起购买更优惠。

2、证书的激活
① 购买后的证书进入激活阶段时,需要你提供 CSR,我这里选择使用在线工具生成:CSR在线生成工具
通配符 1
注意:生成后一定要下载 KEY 文件!生成后一定要下载 KEY 文件!生成后一定要下载 KEY 文件!同时因为你购买的是通配符域名,所以这里的域名要填写 *.your_domain.com
拷贝到激活页的框中,即可看到适配的域名也是通配符域名了:
通配符 2
② 选择添加 DNS 解析的方式来验证域名所有权:
验证域名所有权
③ 选择证书发送到哪个邮箱:
证书发送到哪个邮箱
④ 提交:
提交
⑤ 去添加 DNS 解析来等待审核:
获取 DNS 记录 1
获取 DNS 记录 2
获取 DNS 记录 3
添加 CNAME 记录
接着前往 https://mxtoolbox.com/CnameLookup.aspx 验证 CNAME 是否生效:
生效 之后只需静等 15 到 30 分钟即可,审核通过后证书会发送至你的邮箱。

3、证书的配置
发来的证书会有 2 个文件:
证书
拷贝至服务器后拼接为 .crt 文件:

cat STAR_xxxx_xxx.crt STAR_xxxx_xxx.ca-bundle > xxxx_xxx.bundle.crt

接着把生成 CSR 时一起下载的 .key 文件放到服务器上,补齐完整的证书链:
完整的证书链
之后就能使用了,直接去 Nginx 中配置即可,样例:

   ...
   ...
   server {
        listen       80;
        server_name  test.xxxx.xxx;
        root         /usr/share/nginx/html;

        location / {
            # 跳转 HTTPS
            return 301   https://$host$request_uri;
        }
    }

    server {
        listen          443 ssl;
        server_name     test.xxxx.xxx;

        # SSL 配置
        ssl_certificate             /rab/ssl/xxxx_xxx.bundle.crt;
        ssl_certificate_key         /rab/ssl/private.key;
        ssl_protocols               TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers                 ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;

        location / {
            root /usr/share/nginx/html;
        }
    }
    ...
    ...

访问确认证书生效:
证书生效

结束。