在nodejs express中运行https服务器时出现ERR_SSL_PROTOCOL_ERROR浏览器错误消息

时间:2012-06-27 20:24:56

标签: node.js https express

我使用下面的代码在Express上运行了许多nodejs应用程序。它们都运行良好,使用类似于以下代码:

fs = require 'fs'                                                               
https = require 'https'                                                         
express = require 'express'                                                     
server_port = 3000                                                              
keys_dir = 'keys/'                                                              server_options = {
  key  : fs.readFileSync(keys_dir + 'privatekey.pem'), 
  cert : fs.readFileSync(keys_dir + 'certificate.pem')                          }                                                                                             app = express.createServer(server_options)
app.listen server_port 
console.log "HTTPS Server started on port #{server_port}"  

但是,尝试使用此代码创建新应用程序时,启动https服务器时会看到ERR_SSL_PROTOCOL_ERROR。知道是什么导致了这个问题吗?

1 个答案:

答案 0 :(得分:1)

我发现这是从快递2.5.8转到快递3时引起的 - 特别是3.0.0beta4。在创建新项目时,从npm拉出的版本已更改为版本3系列。即使在运行express --version时模块被标记为“测试版”,此版本也是运行npm install express时安装的版本。有关更改的详细信息已列出here

为了解决这个问题,我使用了以下代码:

const fs = require("fs");
const https = require("https");
const express = require("express");

const keysDir = "keys/";
const options = {
  key  : fs.readFileSync(keysDir + "privatekey.pem"),
  ca   : fs.readFileSync(keysDir + "certrequest.csr"),
  cert : fs.readFileSync(keysDir + "certificate.pem")
};

const app = express();
https.createServer(options, app).listen(3000);