Traefik未使用指定证书用于OpenConnect VPN的配置问询
解决方案
要让vpn.example.tld使用指定的自定义证书,同时其他域名保留Let's Encrypt证书,需要通过**TLS存储(TLS Store)**实现路由与证书的绑定,具体配置如下:
1. 调整Traefik动态配置文件(rules.yml)
修改文件提供者配置,创建独立的TLS存储用于VPN服务,默认存储留给Let's Encrypt证书:
http: routers: router-vpn: entryPoints: - websecure rule: Host(`vpn.example.tld`) service: service-vpn # 给VPN路由指定专属的TLS存储 tls: store: vpn-store services: service-vpn: loadBalancer: servers: - url: "https://ocserver:3334" tls: # 定义两个TLS存储 stores: # 默认存储:自动存放Let's Encrypt生成的证书 default: {} # VPN专属存储:使用你指定的自定义证书 vpn-store: certificates: - certFile: /etc/traefik/log/certs/cert.pem keyFile: /etc/traefik/log/certs/key.pem # 全局注册自定义证书(确保Traefik能识别该证书) certificates: - certFile: /etc/traefik/log/certs/cert.pem keyFile: /etc/traefik/log/certs/key.pem
2. 保持原有Docker Compose配置不变
你的Traefik容器静态配置(docker-compose.yml)无需修改,其中的certificatesresolvers.letsencrypt会自动将生成的证书存入default TLS存储,其他路由(如whoami.example.tld)通过tls.certresolver=letsencrypt继续使用Let's Encrypt证书。
关键原理说明
- Traefik的TLS存储允许为不同路由分配不同的证书集合:
default存储:自动管理Let's Encrypt通过ACME生成的证书,所有未指定专属存储的路由默认使用该存储。vpn-store存储:仅包含你指定的VPN证书,通过router-vpn的tls.store: vpn-store绑定,确保该域名使用自定义证书。
- 此配置让Traefik在处理
vpn.example.tld请求时使用指定证书,同时不影响其他域名的Let's Encrypt证书使用,匹配OpenConnect客户端与服务器的证书要求。
内容的提问来源于stack exchange,提问作者Konstantin
相关产品推荐
相关产品推荐

