Yaws开启basic auth后如何实现Letsencrypt证书自动续期
方案1:修改Yaws配置豁免ACME验证路径(推荐,和Nginx/Apache的实现逻辑一致)
Yaws 2.0+版本支持不同路径的鉴权规则独立配置,路径匹配优先级高于全局配置,你只需要调整对应域名的yaws.conf配置即可:
- 保留原有域名server块的所有基础配置(docroot、端口、证书等)
- 新增
/.well-known/acme-challenge路径的独立配置,关闭该路径的鉴权 - 原有全局的basic auth配置保留,会对除上述豁免路径外的所有请求生效
修改后的完整配置示例:
<server 你的域名> # 原有基础配置保留,比如: port = 80 ssl = on certfile = /path/to/your/cert.pem keyfile = /path/to/your/privkey.pem docroot = /你的站点根目录路径 # 新增ACME验证路径豁免配置 <path /.well-known/acme-challenge> auth = false # docroot和全局保持一致即可,也可以单独指定ACME验证文件的存放目录 docroot = /你的站点根目录路径 </path> # 原有basic auth配置不变,作用于全站非豁免路径 <auth> realm = "some realm" user = "some_user:some_pw" </auth> # 其他原有配置保留 </server>
配置修改完成后执行yaws --check验证语法无误,执行yaws --hup重载配置即可生效,无需重启服务。你可以手动访问http://你的域名/.well-known/acme-challenge/测试文件验证,不会弹出身份验证框即代表配置生效,之后直接用Certbot/acme.sh的webroot模式正常续期即可。
方案2:使用DNS验证模式绕开Web服务器配置
如果不想修改Yaws配置,或者你的站点本身不对外暴露80/443端口,可以选择ACME的DNS验证模式:
- 该模式通过在你的域名解析中添加指定TXT记录完成身份验证,完全不需要访问你的Web服务,也不需要调整任何鉴权规则
- 主流域名服务商都有对应的acme.sh dnsapi适配,配置好对应服务商的API密钥后即可实现全自动续期,不需要人工干预
- 即使你的域名服务商没有现成适配,也可以使用手动DNS模式完成验证,适合低频续期的场景
内容的提问来源于stack exchange,提问作者kklepper
相关产品推荐
相关产品推荐

