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
转载请注明:转载自 易科博客 ,谢谢!

发表评论

电子邮件地址不会被公开。 必填项已用*标注