改造军哥lnmp支持dns方式验证let's encrypt的ssl证书

in Archives with 0 comment

军哥lnmp添加ssl时默认使用的是acme.sh --webroot也就是文件验证方式,该方式只支持80或443端口验证。

如果要让自定义端口获取let's encrypt的免费ssl证书,那么需要改用acme.sh --dns也就是dns验证方式。

以阿里云的dns为例,具体操作如下:

获取阿里云dns api相关参数

阿里云账户默认的AccessKey ID和AccessKey Secret拥有最高权限,为了安全起见,我们需要使用子账户。

https://ram.console.aliyun.com/ 页面,新建一个用户,记录AccessKey ID和AccessKey Secret;然后给这个用户添加“管理云解析(DNS)的权限”。

改造军哥脚本

修改/bin/lnmp,搜索“/usr/local/acme.sh/acme.sh --issue”或直接在1055行,改为如下代码:

    /usr/local/acme.sh/acme.sh --issue --dns dns_ali ${letsdomain} --reloadcmd "/etc/init.d/nginx reload"

export环境变量

使用下面两行命令将阿里云dns api参数添加到linux系统环境变量:

export Ali_Key="替换成你的AccessKey ID"

export Ali_Secret="替换成你的AccessKey Secret"

export的环境变量在重启或下次登录后失效,因此第4步验证成功后,acme.sh会自动将AccessKey ID和AccessKey Secret记录到~/.acme.sh/account.conf,后面自动续期的时候可以直接用。

使用lnmp ssl add命令添加ssl并验证获取let's encrypt证书

这里需要注意的是lnmp状态不能是stop,否则会导致失败,请先使用lnmp start命令启动lnmp环境。

缺点

使用此方法,如果有多个域名使用不同的dns服务商,没办法一次性兼容所有域名。虽然手动修改/bin/lnmp文件首次验证域名可以成功,但后续自动续期会受影响。

其他dns服务商

请参考:https://github.com/acmesh-official/acme.sh/wiki/dnsapi

Comments are closed.