在Namecheap中使用Acme.sh无法生成多域名SSL证书
解决Acme.sh申请包含子域名的SSL证书时404验证失败问题
问题核心原因
你使用同一个-w参数指定了主域名的根目录,但子域名gestion.flata-tech.com的网站根目录与主域名不一致,导致Acme.sh放置的验证文件无法被子域名访问,触发404错误。
解决步骤
1. 确认子域名的实际根目录
登录Namecheap主机后台,查看gestion.flata-tech.com的域名配置,找到它对应的网站文件路径(比如你之前命令中用到的/home/flatrbcg/public_html)。
2. 为每个域名单独指定验证目录
Acme.sh支持多组-w参数,每个域名(或域名组)可对应自己的根目录。修改申请命令如下:
acme.sh --issue -d flata-tech.com -d www.flata-tech.com -w /home/flatrbcg/flata-tech -d gestion.flata-tech.com -w /home/flatrbcg/public_html --force
这里主域名与www子域名沿用原来的目录/home/flatrbcg/flata-tech,gestion.flata-tech.com使用它自身的根目录/home/flatrbcg/public_html,匹配你当前的主机配置。
3. 手动验证文件可访问性
在子域名的根目录下创建临时验证文件,排查路径与权限问题:
mkdir -p /home/flatrbcg/public_html/.well-known/acme-challenge echo "test-content" > /home/flatrbcg/public_html/.well-known/acme-challenge/test.txt chmod 755 /home/flatrbcg/public_html/.well-known chmod 644 /home/flatrbcg/public_html/.well-known/acme-challenge/test.txt
访问https://gestion.flata-tech.com/.well-known/acme-challenge/test.txt,如果能看到test-content说明路径和权限正常;若仍返回404,需检查:
- 子域名的根目录是否配置错误
- 网站的
.htaccess(Apache)或Nginx配置是否有重写规则拦截了该路径
4. 备选方案:使用DNS验证(避开文件路径问题)
如果文件验证始终无法解决,可改用Namecheap自动DNS验证,无需放置验证文件:
- 在Namecheap后台生成API密钥,并将服务器IP添加到API访问白名单
- 设置环境变量:
export NAMECHEAP_API_USER="你的Namecheap用户名" export NAMECHEAP_API_KEY="你的API密钥" - 执行证书申请命令:
acme.sh --issue -d flata-tech.com -d www.flata-tech.com -d gestion.flata-tech.com --dns dns_namecheap --force
内容的提问来源于stack exchange,提问作者havikoro
相关产品推荐
相关产品推荐

