Node.js+Express本地配置SSL后服务启动失败该如何解决
Node.js Express HTTPS服务启动失败解决方法
1. 修正HTTPS服务关联逻辑
当前代码创建HTTPS服务时未传入Express实例,导致路由规则完全不生效,替换原有的server.createServer代码段即可:
server.createServer(options, app).listen(3030, "192.168.1.20", () => { console.log('HTTPS服务启动成功,访问地址:https://192.168.1.20:3030') })
2. 修复证书路径读取错误
使用相对路径读取证书时,会基于启动命令的执行目录寻址,很容易出现文件找不到问题,改用绝对路径读取:
首先在文件头部引入path模块:
const path = require('path');
修改options配置:
const options = { key: fs.readFileSync(path.join(__dirname, 'key.pem')), cert: fs.readFileSync(path.join(__dirname, 'cert.pem')) };
3. 校验证书密钥有效性
- 如果生成密钥时设置了访问密码,需要在options中新增passphrase字段配置密码:
const options = { key: fs.readFileSync(path.join(__dirname, 'key.pem')), cert: fs.readFileSync(path.join(__dirname, 'cert.pem')), passphrase: '你生成证书时设置的密码' };
- 验证密钥和证书是否匹配,执行以下两条命令,输出的MD5哈希值一致则为匹配:
openssl rsa -noout -modulus -in key.pem | openssl md5openssl x509 -noout -modulus -in cert.pem | openssl md5
4. 排查端口IP占用问题
确认3030端口未被其他程序占用,且本机已绑定192.168.1.20IP,不确定的话可以删除监听IP配置,默认监听所有网卡:
.listen(3030, () => { console.log('服务启动成功') })
内容的提问来源于stack exchange,提问作者Rıdvan
相关产品推荐
相关产品推荐

