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

Node.js Express服务器SSL配置后连接不安全及域名无法访问求助

SSL配置问题排查方案

核心问题总结

你的Express网站HTTP访问正常,但配置SSL后出现两个关键问题:

  • 浏览器提示连接不安全,证书与访问地址不匹配
  • 域名无法通过HTTPS访问,仅能通过IP访问

具体排查步骤

1. 修复HTTPS端口配置错误

HTTPS协议默认使用443端口,但你的代码里把SSL服务监听在80端口(HTTP默认端口):

sslServer.listen(80,()=>{
    console.log('Secure server is listening on port 80')
})

这会导致:

  • 浏览器访问https://www.pocketsage.ru时默认尝试连接443端口,而你的服务没在这个端口监听,所以无法访问
  • 若强制访问https://www.pocketsage.ru:80,浏览器会因为端口与协议不匹配触发安全警告

修改方案:将监听端口改为443,同时保留HTTP服务(可选,用于自动跳转HTTPS):

// 启动HTTPS服务在443端口
sslServer.listen(443,()=>{
    console.log('Secure server is listening on port 443')
})

// 可选:启动HTTP服务在80端口,自动跳转HTTPS
const http = require('http')
http.createServer((req, res) => {
    res.writeHead(301, { "Location": "https://" + req.headers['host'] + req.url });
    res.end();
}).listen(80);

2. 验证证书文件正确性

私钥检查

你自行创建的私钥文件pocketsage.key必须符合标准格式:

  • 开头必须是-----BEGIN PRIVATE KEY-----
  • 结尾必须是-----END PRIVATE KEY-----
  • 中间内容不能有多余空格、换行或缺失字符

CA证书处理

部分证书服务商提供的中间证书可能不止一个,若pocketsage_ca.crt包含多个证书,需要确保它们按顺序合并,或者将ca字段改为数组传入:

ca: [
    fs.readFileSync(path.join(__dirname, './cert/中间证书1.crt')),
    fs.readFileSync(path.join(__dirname, './cert/中间证书2.crt'))
]

证书与域名匹配

报错明确显示证书属于www.pocketsage.ru,但你尝试用localhost或IP访问,这必然触发安全警告——SSL证书仅对绑定的域名有效,不能用IP或其他未绑定的地址访问。

3. 确认域名解析与访问方式

  • 确保域名www.pocketsage.ru已正确解析到你的VPS IP 89.108.102.85
  • 访问时必须使用https://www.pocketsage.ru(或https://www.pocketsage.ru:443,若端口未默认映射),禁止用IP或localhost访问

4. 检查VPS端口与防火墙设置

  • 在VPS的防火墙(如ufw、firewalld)中开放443端口:
    # 以ufw为例
    sudo ufw allow 443/tcp
    sudo ufw reload
    
  • 检查云服务商的安全组规则,确保443端口允许外部入站访问

额外验证步骤

可以在VPS上用openssl命令验证证书链是否完整:

openssl s_client -connect www.pocketsage.ru:443

若输出中出现Verify return code: 0 (ok),说明证书配置正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 20:38:09