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

Flask应用部署SSL证书遇OpenSSL版本号错误问题排查

SSL部署错误排查:OpenSSL版本号错误问题

针对你遇到的OpenSSL: error:0A00010B:SSL routines::wrong version number错误,本质是客户端发起SSL握手请求,但服务器返回的是HTTP协议数据而非SSL协议响应,以下是核心排查方向:

1. 容器端口映射错误

检查docker-compose-do.yml中的端口映射配置:

  • 确认443端口是否映射到容器内的SSL服务端口(通常是443),而非HTTP的80端口。错误示例:
    ports:
      - "443:80"  # 错误:把443转发到容器的HTTP服务
    
  • 正确配置应为:
    ports:
      - "443:443"
      - "80:80"   # 可选,用于HTTP跳转HTTPS
    
  • 执行ss -tulpn | grep :443查看宿主机443端口的监听进程,确认是Docker容器在监听,而非其他进程。

2. 容器内Web服务未启用SSL配置

检查容器内Web服务(如Nginx、Apache)的配置文件:

  • 确认配置中存在443端口的SSL监听块,且指定了正确的证书路径:
    以Nginx为例,正确配置片段:
    server {
        listen 443 ssl;
        server_name toxiverse.com www.toxiverse.com;
    
        ssl_certificate /path/to/fullchain.pem;  # 容器内的证书路径
        ssl_certificate_key /path/to/privkey.pem;
    
        # 其他SSL相关配置(协议、加密套件等)
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
    }
    
  • 确认容器内的证书路径与你挂载/复制的路径一致,比如你把证书放在宿主机/root/ssl,需确保docker-compose的volumes配置将其映射到容器内的对应目录:
    volumes:
      - /root/ssl/fullchain.pem:/usr/share/nginx/certs/fullchain.pem
      - /root/ssl/privkey.pem:/usr/share/nginx/certs/privkey.pem
    

3. 证书文件权限问题

Web服务进程(如Nginx的nginx用户、Apache的www-data用户)需要读取证书文件的权限:

  • 在宿主机执行chmod 644 /root/ssl/*.pem,确保证书文件权限为可读。
  • 进入容器执行ls -l /path/to/certs/,确认证书文件的所有者和权限允许Web服务进程读取。

4. 证书文件有效性验证

虽然证书已成功申请,但需确认容器内使用的证书是有效的:

  • 在宿主机执行以下命令检查证书内容:
    openssl x509 -in /etc/letsencrypt/live/toxiverse.com/fullchain.pem -text -noout
    
    确认证书的Subject Alternative Name包含toxiverse.com和www.toxiverse.com,有效期正确。
  • 进入容器,对容器内的证书文件执行同样命令,确认与宿主机的证书一致。

5. 容器服务重启验证

修改配置或证书后,需确保容器完全重启:

  • 执行sudo docker compose -f docker-compose-do.yml down彻底停止容器,再执行up -d --build重新构建启动,避免配置未生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:12:52