|
本帖最后由 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服务了,浏览器地址栏前面有个小锁就说明已经是安全链接了。
|
|