An ACME Shell script: acme.sh

GitHub: https://github.com/Neilpang/acme.sh

acme.sh 实现了 acme 协议, 可以从Let’s Encrypt生成免费的证书,现在已经支持*.domain.com通配符证书

打开终端安装支持包

sudo apt-get install socat

安装acme.sh,支持root和普通账户,安装完成后必须关闭当前终端,重新开启一个以使acme.sh命令生效

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

首先需要到DNSPOD后台去生成API Token(如果腾讯云注册的域名,直接用腾讯云账号登录DNSPOD即可)
在腾讯云域名服务 https://www.dnspod.cn 上申请DNS API Token,安全设置-创建API Token

获取 Aliyun 域名 API 的密钥,在阿里云官网登录的情况下点击https://ak-console.aliyun.com/#/accesskey即可看到自己的密钥,没有就直接创建一个即可。

依次执行如下三条命令,替换成你自己的Id和Key

export DP_Id="1234"
export DP_Key="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
acme.sh --issue --dns dns_dp -d mydomian.com -d *.mydomian.com

一小阵等待之后,你的通配符证书就安静地躺在了~/.acme.sh/mydomian.com/下了

接着配置证书,以Ubuntu下为例,参考这篇文章
Ubuntu下Apache2配置https且强制http转为https
https://www.luochenzhimu.com/archives/448.html

新建一个文件夹用于保存证书,注意不能直接复制生成的证书到目录,需要使用安装命令

mkdir /etc/apache2/certs

安装生成的证书到这个目录保存,用于在Apache2中引用,在终端输入以下命令(注意这是单条命令,只不过转行了)将证书保存到/etc/apache2/certs

acme.sh --install-cert -d luochenzhimu.com \
--cert-file /etc/apache2/certs/luochenzhimu.com.crt  \
--key-file /etc/apache2/certs/luochenzhimu.com.key  \
--ca-file /etc/apache2/certs/ca.crt \
--reloadcmd "service apache2 force-reload"

复制/etc/apache2/sites-available目录下的000-default.conf和default-ssl.conf到/etc/apache2/sites-enabled

配置default-ssl.conf为

SSLCertificateFile  /etc/apache2/certs/luochenzhimu.com.crt
SSLCertificateKeyFile /etc/apache2/certs/luochenzhimu.com.key
SSLCertificateChainFile /etc/apache2/certs/ca.crt

重启apache,应该已经可以访问https了

sudo service apache2 restart

后续更新acme.sh方法

acme.sh --upgrade

使用acme.sh在Ubuntu配置Let’s Encrypt免费通配符SSL证书(图1)