已安装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
相关产品推荐
相关产品推荐

