官方文档:https://lnmp.org/faq/letsencrypt-wildcard-ssl.html ,实践使用腾讯云的Dnspod

日常使用lnmp ssl add的时候为域名申请的往往只是主域名SSL,二级域名无法获得SSL,所以多站点的时候需要泛域名SSL证书,即对该主域名下的所有二级域名也生效.

LNMP 1.5已经添加了对通配符证书的支持,生成通配符证书和Let'sEncrypt平常SSL证书命令有些差异(通配符证书命令是 lnmp dnsssl 域名dns服务商简称,普通证书是lnmp ssl add,最好是使用域名DNS服务商的API,这样才能实现自动续期。

域名DNS服务商API方式生成SSL证书

如果要生成通配符证书,首先要准备好一下东西:

  • 域名一枚
  • 支持该域名DNS服务商并在后面表格找到名称及简称
  • 域名DNS服务商API操作所需的参数,如Key、Secret或Token之类的。
  • 已安装lnmp 1.5最新版或者升级到1.5最新版(不确定的话可以下载最新的安装包,安装包目录下运行 ./upgrade1.x-1.5.sh)

下面我们已cloudxns为例,cloudxns API需要到 https://www.cloudxns.net/AccountManage/apimanage.html 这里获取API KEY和SECRET KEY(文章最后我们会附上常见域名DNS服务商的简称、获取API方法和所需的参数)。
通过表格可以知道,cloudxns的简称为cx,我们也通过cloudxns网站获取到了API KEY和SECRTET KEY,下面需要在终端里将API操作所需的参数输出供程序使用,命令如下:

export CX_Key="123456"
export CX_Secret="abcdef"

DNSPOD的话就是访问https://www.dnspod.cn/console/user/security,新建一个Token名称随意,保存好ID和Key,然后

export DP_Id="123456"
export DP_Key="abcdef"

其他域名DNS服务的API参数命令可以在文章后面表格里找,该项必须export,否则将提示You don't specify dnspod api key and key id yet.失败,而且是严格区分大小写!!!

下面开工开始添加虚拟主机并生成通配符SSL证书,命令:

lnmp dnsssl dp 
#或 
lnmp dns dp

dp为域名DNS服务商的简称,如果使用的其他DNS服务商更换为其他DNS服务商的简称,可以在文章后面对照表格里查看DNS服务商对应简称。
q
分别按提示输入域名、添加更多域名、网站目录、是否启用日志等选项,详细介绍可以看上图文字注释。
注意:如果要生成通配符/泛域名SSL证书,输入其他域名时不要输入www.lnmp.org 的域名,否则将生成失败!!!
如果之前输出的API参数没问题的话,等几分钟就会生成完毕,并提示"Let's Encrypt SSL Certificate create successfully."。

注意生成的cer,key,pem文件位置,保存起来,二级域名可以直接使用他们,

提取cer key pem,在主域名主机vhost里的涉及到的ssl文件
二级域名解析新机ip,添加vhost不选ssl,然后在二级域名的vhost配置文件里删80段,仿照主域名文件加ssl参数,或者lnmp ssl add选自定义ssl,证书cer密钥key即可.

域名DNS服务商名称、简称、API参数和开通API对照表

API参数中Key、Secret等之类的参数都要改成你自己API的不然一样不行

服务商名称服务商简称所需API参数获取API参数地址
cloudxnscxexport CX_Key="123456"
export CX_Secret="abcdef"
点击访问
dnspod (cn大陆版)dpexport DP_Id="123456"
export DP_Key="abcdef"
点击访问
aliyunaliexport Ali_Key="123456"
export Ali_Secret="abcdef"
点击访问
cloudflarecfexport CF_Key="123456"
export CF_Email="a[email protected]m"
点击访问
linodelinodeexport LINODE_API_KEY="123456"点击访问
heheexport HE_Username="username"
export HE_Password="password"
he的用户名密码
digitaloceandgonexport DO_API_KEY="123456"点击访问
namesilonamesiloexport Namesilo_Key="123456"点击访问
awsawsexport AWS_ACCESS_KEY_ID=123456
export AWS_SECRET_ACCESS_KEY=abcdef
点击访问
namecomnamecomexport Namecom_Username="username"
export Namecom_Token="123456"
点击访问
freednsfreednsexport FREEDNS_User="username"
export FREEDNS_Password="password"
freedns的用户名密码
godaddygdexport GD_Key="123456"
export GD_Secret="abcdef"
点击访问
yandexyandexexport PDD_Token="abcdef"点击访问

这里只列出了国内用户使用比较多的DNS服务商,也可以去 https://github.com/Neilpang/acme.sh/tree/master/dnsapi 查看其他服务商的具体使用方法。

手动DNS添加TXT记录生成SSL

当然还有另外一种方式也是采用DNS,但是需要手动在域名DNS服务商那边添加TXT记录,命令是

lnmp dnsssl dp 
#或 
lnmp dns dp

注意使用手动DNS将无法自动续期!!!

添加虚拟主机过程的信息和前面使用API所填写的信息都是一样的,只不过不需要export API的相关信息。
e
出现改提示就需要去域名DNS服务商网站上手动添加上提示的主机记录和值,如果是添加的二级域名,如图,就需要在域名DNS服务商后台上添加的TXT主机记录为_acme-challenge.vpser

值为图中黄色框中的绿色的所有字符。如果是为lnmp.org生成SSL证书的话主机记录直接添加 _acme-challenge 就可以了,注意如果添加多个域名每个域名都要按提示的主机记录和值添加到域名DNS服务商后台上。
r
如果添加的主机记录和记录值都没问题的话就会自动生成证书并添加好虚拟主机,就可以直接使用了。

THE END
最后修改:2019 年 02 月 20 日 22 : 06
本文链接:https://www.j000e.com/linux/lnmpdnsssladd.html
版权声明:本文『使用LNMP包为域名申请免费通配符/泛域名SSL证书』为『Joe』原创。著作权归作者所有。
转载说明:使用LNMP包为域名申请免费通配符/泛域名SSL证书 || Joe's Blog』转载许可类型见文末右下角标识。允许规范转载时,转载文章需注明原文出处及地址。
Last modification:February 20, 2019