Let's Encrypt 是目前免费SSL证书应用最广泛的一家,不仅免费而且证书也被众多机构认可的。以前 Let’s Encrypt 的证书只支持顶级域名申请,不过最近新出来通配符/泛域名SSL证书。泛域名证书就比单域名证书方便的多了,一次签发所有子域名通用只需要担心续期问题就行了。

 title=

今天我们来说下如何申请使用 Let’s Encrypt 泛域名SSL 证书。

安装 acme.sh

进入 home 目录,并执行安装命令

curl  https://get.acme.sh | sh

安装成功后会自动将acme.sh安装进了用户目录下.acme目录中,你可以使用 find 命令找到真实的路径。

创建 一个 bash 的 alias

alias acme.sh=~/.acme.sh/acme.sh

方便我们之后可以直接使用acme.sh调出命令。

生成证书

这里我使用的是dns自动验证方式验证域名所有权。

acme.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十种解析商的自动集成
具体可参考官方文档:https://github.com/Neilpang/acme.sh/blob/master/dnsapi/README.md

由于我的dns解析使用的是 Hurricane ( dns.he.net ) 这家因为没有提供Api,所以我们需要手动设置用户信息来完成域名所有权的验证,如下:

export HE_Username="用户名"
export HE_Password="密码"

然后执行下面的命令生成证书文件(请替换为自己的域名)

acme.sh --issue --dns dns_he -d example.com -d *.example.com

需要注意的是:第一个 -d 后不可直接写通配符域名 *.example.com,否则可能会出现签发的证书无法被信任的情况,一定要写个单域名。第二个 -d 后面可以写泛域名。

到这里我们的证书就自动获取到用户目录下.acme.sh 文件夹下了。

复制/安装证书

正确的使用方法是使用 --installcert 命令,并复制到指定目标位置,可用以下命令自动复制到指定目录:

acme.sh  --installcert  -d  example.com   \
        --key-file   /etc/nginx/ssl/example.com.key \
        --fullchain-file /etc/nginx/ssl/fullchain.cer \
        --reloadcmd  "/etc/init.d/nginx reload"

该命令会被自动记录,以后自动更新证书的时候也会自动执行该命令的。

注意事项

  1. Nginx 的配置 ssl_certificate 使用 /etc/nginx/ssl/fullchain.cer ,而非 /etc/nginx/ssl/<domain>.cer ,否则 SSL Labs 的测试会报 Chain issues Incomplete 错误。
  2. --installcert命令可以携带很多参数,来指定目标文件。并且可以指定reloadcmd,当证书更新以后,reloadcmd会被自动调用,让服务器生效。
  3. 证书在 60 天以后会自动更新,无需任何操作。
  4. 设置 Let's Encrypt 作为证书默认服务提供商,执行命令 acme.sh --set-default-ca --server letsencrypt

相关推荐

  1. 群晖 Synology 部署 ZeroSSL 泛域名证书
  2. 因群晖NAS系统CA证书失效导致的系列问题
  3. SSL证书无法通过acme.sh自动续期,竟是因为它!
  4. 群晖NAS | 部署Let's Encrypt泛域名证书(支持自动续签)
  5. 使用Caddy申请免费的Let’s Encrypt泛域名SSL证书
  6. LNMP升级OpenSSL开启TLS1.3
文章作者:喵斯基部落
原文地址:https://www.moewah.com/archives/164.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。非商业转载及引用请注明出处(作者、原文链接),商业转载请联系作者获得授权。