使用 ACME.SH 申请并安装 Let’s Encrypt SSL 证书
Let’s Encrypt 是一个免费的,自动化的,开放的证书颁发机构(CA),为公众的利益而运行。 它是一项由 Internet Security Research Group(ISRG)提供的服务。
acme.sh 则是实现了 acme 协议, 可以从 letsencrypt 生成免费的证书。
安装 acme.sh
curl https://get.acme.sh | sh source ~/.bashrc
1、通过 http 方式申请证书
只需要指定域名, 并指定域名所在的网站根目录. acme.sh 会全自动的生成验证文件, 并放到网站的根目录, 然后自动完成验证. 最后会聪明的删除验证文件. 整个过程没有任何副作用.
# 生成 RSA 证书: acme.sh --issue -d blog.exsvc.cn -w /var/www/_letsencrypt/ # 生成 ECC 证书: acme.sh --issue -d blog.exsvc.cn -w /var/www/_letsencrypt/ --keylength ec-256
/var/www/_letsencrypt/ 为 blog.exsvc.cn 站点下的 /.well-known/acme-challenge/ 证书请求目录。
如果没有安装 web 服务器,acme.sh 也自带一个建议的web服务用于证书申请,前提是需要安装 socat ,80端口没有被占用。使用方法:
acme.sh --issue -d blog.exsvc.cn --standalone
2、通过 DNS 方式申请证书
这种方式的好处是,你不需要任何服务器,不需要任何公网 ip,只需要 dns 的解析记录即可完成验证,而且可申请泛域名证书。坏处是,需要配合DNS解析服务商的API使用,否则 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。
目前支持 DNSPod、CloudXNS、Aliyun、jdcloud、 CloudFlare、 GoDaddy、 Azure、AWS 等国内外大多数主流DNS服务提供商。详细清单详见: https://github.com/Neilpang/acme.sh/wiki/dnsapi
阿里云 DNS 申请方式
export Ali_Key="abcd" export Ali_Secret="xxxxxxxxxx" # RSA 证书 acme.sh --issue --dns dns_ali -d blog.exsvc.cn -d *.exsvc.cn # ECC 证书 acme.sh --issue --dns dns_ali -d blog.exsvc.cn -d *.exsvc.cn --keylength ec-256
Ali_Key 和 Ali_Secret 需要从阿里云RAM访问控制中获取。
DNSPod 申请方式
export DP_Id="1234" export DP_Key="sADDsdasdgdsf" acme.sh --issue --dns dns_dp -d exsvc.cn-d blog.exsvc.cn
3、安装证书
证书生成以后, 接下来需要把证书安装到真正需要用它的地方。acme.sh默认生成的证书都放在安装目录下: ~/.acme.sh/ ,但是官方不推荐直接使用该目录下的证书文件,仅供 acme.sh 内部使用。
正确的使用方法是使用 –installcert 命令,并指定目标位置, 然后证书文件会被复制到相应的位置。
acme.sh --installcert -d blog.exsvc.cn \ --key-file /etc/nginx/certs/blog.exsvc.cn.key \ --fullchain-file /etc/nginx/certs/blog.exsvc.cn.crt \ --reloadcmd "systemctl reload nginx" --ecc
–reloadcmd 参数用于让web服务器重新加载新的证书文件,例子中使用的是 nginx 服务器,您也可以定义成其它服务器。
–ecc 参数用于 ECC 证书,rsa证书请不要添加此参数,下同。
4、更新SSL证书
Let’s Encrypt 的证书有效期为3个月,每3个月得重新申请证书。通过 acme.sh 可以自动管理SSL证书的申请。通过上面步骤的安装后 acme.sh 会定期自动更新SSL证书。
当然,acme.sh 也提供手动更新方式。
acme.sh --renew -d blog.exsvc.cn --ecc --force
5、取消SSL证书的自动续期
有时候你可能需要移除特定域名的自动申请,这时候可以使用下面的命令让 acme.sh 取消对特定域名的自动续期。当然已申请的证书仍然有效,不会失效。
acme.sh --remove -d blog.exsvc.cn --ecc
6、安装申请及安装证书的命令
acme.sh --issue -d blog.exsvc.cn -w /var/www/_letsencrypt/ acme.sh --issue -d blog.exsvc.cn -w /var/www/_letsencrypt/ --keylength ec-256 acme.sh --installcert -d blog.exsvc.cn \ --key-file /etc/nginx/certs/blog.exsvc.cn.rsa.key \ --fullchain-file /etc/nginx/certs/blog.exsvc.cn.rsa.crt \ --reloadcmd "systemctl reload nginx" acme.sh --installcert -d blog.exsvc.cn \ --key-file /etc/nginx/certs/blog.exsvc.cn.ecc.key \ --fullchain-file /etc/nginx/certs/blog.exsvc.cn.ecc.crt \ --reloadcmd "systemctl reload nginx" --ecc
原文链接地址:http://blog.exsvc.cn/article/acme-sh-ssl-install.html
转载请注明:转载自 易科博客 ,谢谢!