配置通配符子域名证书仍出现ERR_CERT_COMMON_NAME_INVALID错误
问题:HTTPS子域名访问触发ERR_CERT_COMMON_NAME_INVALID错误(证书已配置*.app SAN)
访问所有*.app子域名(例如https://portainer.app/)时,浏览器提示ERR_CERT_COMMON_NAME_INVALID错误,但证书已明确包含app和*.app的SAN条目。主域名https://app/访问正常,证书验证通过;通过app/portainer或10.1.1.51/portainer访问也能正常使用SSL加密。
环境与配置详情
- 服务器:Debian Docker服务器,主机名
app,IP10.1.1.51,域内所有设备均可正常解析该主机名与IP(已通过ping、nslookup验证) - 证书体系:使用XCA生成Root CA、Intermediate CA,终端服务器证书由Intermediate CA签名;Root与Intermediate公钥已部署至域内所有设备。证书SAN包含:
... DNS Name=terminal DNS Name=*.terminal DNS Name=app DNS Name=*.app DNS Name=localhost IP Address=127.0.0.1 IP Address=10.1.1.50 IP Address=10.1.1.51 ...
Portainer Docker Compose配置
services: portainer: image: portainer/portainer-ce:latest container_name: portainer restart: unless-stopped ports: - 9810:9443 - 8000:8000 volumes: - ./data:/data - ./ssl:/certs - /var/run/docker.sock:/var/run/docker.sock. command: - --ssl - --sslcert - /certs/Servers-Public.crt - --sslkey - /certs/Servers-Private.pem
Nginx配置
portainer.conf(子域名站点)
server { listen 443 ssl; listen [::]:443 ssl; server_name portainer.app; ssl_certificate /etc/ssl/certs/Servers-Public.crt; ssl_certificate_key /etc/ssl/private/Servers-Private.pem; location / { proxy_pass https://10.1.1.51:9810/; } }
default.conf(主站点)
server { listen 443 ssl; listen [::]:443 ssl; server_name app localhost 10.1.1.51; ssl_certificate /etc/ssl/certs/Servers-Public.crt; ssl_certificate_key /etc/ssl/private/Servers-Private.pem; location / { root /usr/share/nginx/html; index index.html index.htm; } location /portainer/ { proxy_pass https://10.1.1.51:9810/; proxy_set_header X-Forwarded-Prefix /portainer; proxy_set_header Host $host; } }
HTTP转HTTPS重定向配置
server { listen 80; listen [::]:80; server_name portainer.app; return 301 https://$host$request_uri; }
已排查内容
- 检查Nginx配置、Docker Compose文件、DNS设置,未发现异常
- 重新生成包含原域名的证书,以及仅包含
portainer.app和*.portainer.app的简化证书,问题依旧 - DNS可正确解析子域名到服务器IP
10.1.1.51,但访问子域名时Nginx容器无日志记录 - 关闭ESET杀毒软件后问题仍存在
请问错误可能出在哪里?
内容的提问来源于stack exchange,提问作者Atiris
相关产品推荐
相关产品推荐

