You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Traefik与Route53时,用户域名绑定服务遇SSL错误求助

解决Traefik反向代理中外部域名绑定的SSL错误(ERR_SSL_UNRECOGNIZED_NAME_ALERT)

你遇到的ERR_SSL_UNRECOGNIZED_NAME_ALERT错误核心原因是:当用户访问subdomain.external.com时,Traefik返回的是仅包含mywebapp.com和*.mywebapp.com的SSL证书,而证书中未覆盖用户的外部域名,浏览器因此判定证书不匹配。

问题分析

你之前尝试添加Host(subdomain.external.com)到路由规则,但未同步更新SSL证书配置——Traefik不会自动为新增的域名生成证书,除非你调整TLS配置让证书解析器(certresolver)处理这些外部域名。

解决方案

以下是针对你的场景的具体配置调整步骤:

1. 调整服务的TLS配置,移除固定域名限制

修改docker-compose.yaml中你的服务标签,删除固定的domains配置,让Traefik的证书解析器自动为匹配的域名生成证书:

services:
  my_php_apache:
    labels:
      - "traefik.enable=true"
      # 保留包含外部域名的路由规则
      - "traefik.http.routers.mywebapp.rule=HostRegexp(`{subdomain:[a-z0-9-]+}.mywebapp.com`) || Host(`mywebapp.com`) || Host(`subdomain.external.com`)"
      - "traefik.http.routers.mywebapp.tls=true"
      - "traefik.http.routers.mywebapp.entrypoints=https"
      - "traefik.http.routers.mywebapp.tls.certresolver=mydnschallenge"
      # 移除下面两行固定域名的配置
      # - "traefik.http.routers.mywebapp.tls.domains[0].main=mywebapp.com"
      # - "traefik.http.routers.mywebapp.tls.domains[0].sans=*.mywebapp.com"

2. 选择适配外部域名的ACME挑战方式

由于用户的外部域名由他们自行管理DNS,HTTP挑战比DNS挑战更适合你的场景(无需操作用户的DNS记录):

  • 确保Traefik静态配置(如traefik.yaml)中开启HTTP入口并配置HTTP挑战的证书解析器:
entryPoints:
  web:
    address: ":80"
  websecure:
    address: ":443"

certificatesResolvers:
  myhttppchallenge:
    acme:
      email: your-email@example.com # 替换为你的ACME注册邮箱
      storage: ./acme.json # 证书存储路径
      httpChallenge:
        entryPoint: web # 指定使用HTTP入口完成挑战
  • 同步更新服务标签中的证书解析器为myhttppchallenge:
- "traefik.http.routers.mywebapp.tls.certresolver=myhttppchallenge"

3. 添加HTTP到HTTPS的全局重定向(可选但推荐)

在Traefik静态配置中添加全局重定向,确保用户访问HTTP时自动跳转至HTTPS:

http:
  middlewares:
    redirect-to-https:
      redirectScheme:
        scheme: https
  routers:
    http-catchall:
      entryPoints: [web]
      middlewares: [redirect-to-https]
      rule: HostRegexp(`{host:.+}`)
      service: noop@internal

4. 验证配置

重启Traefik和你的服务后,访问subdomain.external.com,Traefik会自动通过HTTP挑战获取该域名的SSL证书,证书匹配后错误即可解决。

注意事项

  • 如果需要支持多个外部域名,可以将路由规则改为HostRegexp({host:.+}),但需添加额外的验证逻辑(如白名单)避免滥用。
  • 确保你的服务器80端口对外开放,HTTP挑战需要通过该端口完成ACME验证。

内容的提问来源于stack exchange,提问作者Kaharon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 16:24:55