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

已安装SSL证书仍出现ERR_SSL_PROTOCOL_ERROR问题求助

解决Hostinger VPS HTTPS访问问题(ERR_SSL_PROTOCOL_ERROR)

核心问题分析

你当前的问题根源在于:域名的SSL证书是在Hostinger云托管计划下安装的,但实际服务部署在VPS上,证书并未配置到VPS的服务链路中,导致HTTPS握手失败;同时直接通过域名:3000访问时,服务本身未启用SSL,所以只能走HTTP并提示不安全。

具体解决步骤

1. 获取SSL证书文件

Hostinger为域名颁发的SSL证书需要导出后部署到VPS,操作如下:

  • 登录Hostinger后台,进入你的云托管计划(注意不是VPS管理面板)
  • 找到SSL/TLS管理模块,选中对应域名
  • 点击「导出证书」,下载包含以下文件的压缩包:
    • 证书文件(通常命名为cert.pem或domain.crt)
    • 私钥文件(通常命名为privkey.pem或private.key)
    • 证书链文件(可选,通常命名为chain.pem或bundle.crt)
      如果找不到导出入口,直接联系Hostinger客服索要这三个文件,说明用于VPS部署即可。

2. 配置Nginx反向代理(推荐方案)

用Nginx做反向代理,既可以处理SSL握手,又能将80/443端口的请求转发到3000端口的服务,步骤如下:

  • 安装Nginx:
    sudo apt update && sudo apt install nginx -y
    
  • 停止默认Nginx服务:
    sudo systemctl stop nginx
    
  • 创建域名配置文件(替换yourdomain.com为你的实际域名,替换证书路径为你上传到VPS的文件路径):
    server {
        listen 80;
        server_name yourdomain.com www.yourdomain.com;
        # 强制HTTP跳转HTTPS
        return 301 https://$host$request_uri;
    }
    
    server {
        listen 443 ssl;
        server_name yourdomain.com www.yourdomain.com;
    
        # 配置SSL证书
        ssl_certificate /path/to/your/cert.pem;
        ssl_certificate_key /path/to/your/privkey.pem;
        # 可选:配置证书链
        ssl_trusted_certificate /path/to/your/chain.pem;
    
        # SSL安全优化
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
    
        # 反向代理到3000端口服务
        location / {
            proxy_pass http://localhost:3000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    
  • 将配置文件保存到/etc/nginx/sites-available/yourdomain.conf,并创建软链接到启用目录:
    sudo ln -s /etc/nginx/sites-available/yourdomain.conf /etc/nginx/sites-enabled/
    
  • 验证配置正确性:
    sudo nginx -t
    
  • 启动Nginx并设置开机自启:
    sudo systemctl start nginx
    sudo systemctl enable nginx
    

3. 调整PM2服务配置(可选)

为了避免服务直接暴露,建议将服务绑定到本地回环地址:

  • 查看当前PM2服务列表:
    pm2 list
    
  • 编辑服务配置文件(如ecosystem.config.js),将host设置为127.0.0.1:
    module.exports = {
      apps : [{
        name: "your-app-name",
        script: "./app.js",
        env: {
          NODE_ENV: "production",
          HOST: "127.0.0.1",
          PORT: 3000
        }
      }]
    }
    
  • 重启PM2服务:
    pm2 reload ecosystem.config.js
    

4. 验证与排错

完成配置后,直接访问https://yourdomain.com,应该显示安全锁并正常加载。如果仍有问题:

  • 检查VPS防火墙是否开放80和443端口:
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    sudo ufw reload
    
  • 用openssl s_client -connect yourdomain.com:443命令检查SSL握手细节,根据输出定位具体错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 22:22:23