Let's Encrypt 是目前免费SSL证书应用最广泛的一家,不仅免费而且证书也被众多机构认可的。以前 Let’s Encrypt 的证书只支持顶级域名申请,不过最近新出来通配符/泛域名SSL证书。泛域名证书就比单域名证书方便的多了,一次签发所有子域名通用只需要担心续期问题就行了。
今天我们来说下如何申请使用 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"
该命令会被自动记录,以后自动更新证书的时候也会自动执行该命令的。
注意事项
- Nginx 的配置
ssl_certificate
使用/etc/nginx/ssl/fullchain.cer
,而非/etc/nginx/ssl/<domain>.cer
,否则 SSL Labs 的测试会报Chain issues Incomplete
错误。 --installcert
命令可以携带很多参数,来指定目标文件。并且可以指定reloadcmd
,当证书更新以后,reloadcmd
会被自动调用,让服务器生效。- 证书在 60 天以后会自动更新,无需任何操作。
- 设置 Let's Encrypt 作为证书默认服务提供商,执行命令
acme.sh --set-default-ca --server letsencrypt
相关推荐
- 群晖 Synology 部署 ZeroSSL 泛域名证书
- 因群晖NAS系统CA证书失效导致的系列问题
- SSL证书无法通过acme.sh自动续期,竟是因为它!
- 群晖NAS | 部署Let's Encrypt泛域名证书(支持自动续签)
- 使用Caddy申请免费的Let’s Encrypt泛域名SSL证书
- LNMP升级OpenSSL开启TLS1.3
文章作者:喵斯基部落
原文地址:https://www.moewah.com/archives/164.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。非商业转载及引用请注明出处(作者、原文链接),商业转载请联系作者获得授权。