cjchome 发表于 2021-11-19 14:08

梅林软件中心Let’s Encrypt插件同时为主&泛域名申请证书

本帖最后由 cjchome 于 2021-11-19 22:04 编辑

本方法仅针对华硕固件软件中心Let's Encrypt插件进行修改,用命令行自行申请证书的不在此范畴。

本人不太喜欢输www.example.com这样的域名,所以对自己的域名是用@解析的,只解析主域名example.com
但华硕固件384软件中心的Let's Encrypt插件不支持仅对主域名申请证书

而用“*”对泛域名进行解析的话,*.example.com是不包括example.com的,两者有区别,所以*.example.com的证书example.com不能用。
既然插件的WebUI不让仅对主域名进行设置,我们就从后台脚本入手。

Let's Encrypt是用acme申请证书的,用WinSCP SSH登录路由,通过搜索acme*搜索acme相关文件,找到其中acme_config.sh脚本
acme_config.sh位于/jffs/.koolshare/scripts/(.koolshare是隐藏属性,找不到的话,就从/koolshare/scripts/进入)
双击打开看了一下,果然申请、安装和管理证书的指令在这个脚本文件当中
其中有调用到acme.sh申请证书的指令有两处,一处在start_issue()函数,另一处在install_cert()函数,
在以下三条指令加入对主域名申请证书的参数-d $acme_domain,可以同时为主域名和泛域名申请证书:

原代码:
start_issue(){
...
      #./acme.sh --home "$acme_root" --issue --dns $dnsapi -d $acme_domain -d $acme_subdomain.$acme_domain --use-wget --log-level 2 --debug
      ./acme.sh --home "${acme_root}" --issue --dns ${dnsapi} -d ${acme_subdomain}.${acme_domain} --use-wget --insecure
}

install_cert(){
...
      # install into multi path
      ./acme.sh --home "${acme_root}" --installcert -d ${acme_subdomain}.${acme_domain} --key-file /tmp/etc/key.pem --cert-file /tmp/etc/cert.pem
      ./acme.sh --home "${acme_root}" --installcert -d ${acme_subdomain}.${acme_domain} --key-file /jffs/ssl/key.pem --cert-file /jffs/ssl/cert.pem
      ./acme.sh --home "${acme_root}" --installcert -d ${acme_subdomain}.${acme_domain} --key-file /jffs/etc/key.pem --cert-file /jffs/etc/cert.pem
...
}
修改为:
start_issue(){
...
      #./acme.sh --home "$acme_root" --issue --dns $dnsapi -d $acme_domain -d $acme_subdomain.$acme_domain --use-wget --log-level 2 --debug   #这行被注释了,可以不改
      ./acme.sh --home "${acme_root}" --issue --dns ${dnsapi} -d ${acme_subdomain}.${acme_domain} -d ${acme_domain} --use-wget --insecure
}

install_cert(){
...
      # install into multi path
      ./acme.sh --home "${acme_root}" --installcert -d ${acme_subdomain}.${acme_domain} -d ${acme_domain} --key-file /tmp/etc/key.pem --cert-file /tmp/etc/cert.pem
      ./acme.sh --home "${acme_root}" --installcert -d ${acme_subdomain}.${acme_domain} -d ${acme_domain} --key-file /jffs/ssl/key.pem --cert-file /jffs/ssl/cert.pem
      ./acme.sh --home "${acme_root}" --installcert -d ${acme_subdomain}.${acme_domain} -d ${acme_domain} --key-file /jffs/etc/key.pem --cert-file /jffs/etc/cert.pem
...
}
注意:修改加入的-d $acme_domain参数一定要放在-d $acme_subdomain.$acme_domain参数之后,因为这个脚本原设计就是会根据第一个-d参数生成证书目录名称,下次开启服务时如果在/koolshare/acme/找不到类似*.example.com格式的目录及目录内之相应文件,就会调用del_all_cert函数删除所有证书。如果将参数-d $acme_domain放前面,生成的文件夹是example.com而不是*.example.com,这会使脚本识别不到相应文件存在而导致证书被删除。

修改完成后保存,再到Let's Encrypt插件的WebUI重新申请证书,不出意外的话几分钟后提示成功,就可以试试用https://example.com访问一下你路由的Web服务了,浏览器地址栏前面有个小锁就说明已经是安全链接了。



阿飘 发表于 2021-12-3 02:20

本帖最后由 阿飘 于 2021-12-3 02:28 编辑

感谢分享 免费的ddns能这样用吗?或者二级域名呢?

cjchome 发表于 2021-12-3 10:46

阿飘 发表于 2021-12-3 02:20
感谢分享 免费的ddns能这样用吗?或者二级域名呢?

免费的DDNS可以用,但二级域名不行

阿飘 发表于 2021-12-3 22:09

蛮纠结的 这样的话 没得选免费ddns呀



donychen 发表于 2023-7-7 13:27

请教一下,域名那里该怎么填?第一个格子填*吗?还是把主域名拆开填

cjchome 发表于 2023-7-7 13:42

donychen 发表于 2023-7-7 13:27
请教一下,域名那里该怎么填?第一个格子填*吗?还是把主域名拆开填

填*,修改后的插件会同时为主&泛域名申请证书

donychen 发表于 2023-7-7 13:47

本帖最后由 donychen 于 2023-7-7 13:51 编辑

cjchome 发表于 2023-7-7 13:42
填*,修改后的插件会同时为主&泛域名申请证书
谢谢!
但是这样提交后好像报错了

Fri Jul7 13:36:22 CST 2023] Not valid yet, let's wait 10 seconds and check next one.
Please refer to https://www.gnu.org/software/wget/manual/html_node/Exit-Status.html for error code: 4
Checking xcde.xyz for _acme-challenge.xcde.xyz
Please refer to https://www.gnu.org/software/wget/manual/html_node/Exit-Status.html for error code: 4
Not valid yet, let's wait 10 seconds and check next one.
Please refer to https://www.gnu.org/software/wget/manual/html_node/Exit-Status.html for error code: 4
Let's wait 10 seconds and check again.
Timed out waiting for DNS.
check dns error.
Please add '--debug' or '--log' to check more details.
See: https://github.com/acmesh-official/acme.sh/wiki/How-to-debug-acme.sh

cjchome 发表于 2023-7-7 14:30

donychen 发表于 2023-7-7 13:47
谢谢!
但是这样提交后好像报错了



4
Network failure.
网络问题吧,毕竟是国外网站
页: [1]
查看完整版本: 梅林软件中心Let’s Encrypt插件同时为主&泛域名申请证书