acme自动申请ssl证书
免费的ssl证书申请有很多渠道,但很多都需要到期重新申请。acme可以到期自动重新申请新的证书,放哪里就不用管了。
acme.sh的官方github中提供的wiki:https://github.com/acmesh-official/acme.sh/wiki/说明
安装acme.sh
官方提供了三种常见的安装方式。分别为:使用curl直接从get.acme.sh
在线安装,或者在github下载,或者git克隆了项目手动安装。
很不信,因为网络原因,前两种方式都直接被拒绝访问了。我只能使用第三种,使用git clone这个项目,并安装:
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install
如果想尝试前两种,可以参考官方github。
生成证书
生成证书有两种验证方式,http和dns。
http方式是需要在你的网站根目录下放置一个文件, 来验证你的域名所有权,完成验证. 然后就可以生成证书了。
但是我的根域名另有他用,故使用第二种dns验证。
dns验证也分两种,手动dns和自动dns,选择其中一种就可。
手动dns验证
手动dns就是在购买域名的地方手动添加acme生成的txt。使用下面的命令:
acme.sh --issue --dns -d xxxxxxx.com
然后, acme.sh 会生成相应的解析记录显示出来, 你只需要在你的域名管理面板中添加这条 txt 记录即可.等待解析完成之后, 重新生成证书:
acme.sh --renew -d xxxxxxx.com
注意第二次这里用的是 --renew
自动dns验证
dns 方式的真正强大之处在于可以使用域名解析商提供的 api 自动添加 txt 记录完成验证。
自动dns需要使用购买域名的网站提供的api访问。比如阿里云:
使用阿里云域API自动颁发证书
首先,您需要登录到Aliyun帐户以获取API密钥。 https://ak-console.aliyun.com/#/accesskey
export Ali_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export Ali_Secret="jlsdflanljkljlfdsaklkjflsa"
好的,让我们现在颁发证书:
acme.sh --issue --dns dns_ali -d example.com -d www.example.com
的Ali_Key
和Ali_Secret
将被保存~/.acme.sh/account.conf
,需要时会被重用。
不同的运行商是不同的,请参考wiki,根据自己的运营商来:https://github.com/acmesh-official/acme.sh/wiki/dnsapi
如果需要申请泛域名证书,命令为:
acme.sh --issue --dns dns_ali -d aa.com -d "*.aa.com"
使用证书
将使用的路径指向生成的证书
以nginx举例。
ssl_certificate /root/.acme.sh/xxxxx.com/fullchain.cer;
ssl_certificate_key /root/.acme.sh/xxxxx.com/xxxxxx.com.key;
访问网站的时候就可以见到证书