军哥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
本文由 D9 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Mar 17, 2020 at 02:04 pm