NodeJS https服务器使用Express返回ERR_SSL_PROTOCOL_ERROR

Cal*_*lum 5 javascript ssl https node.js

我正在尝试在我的Node.js服务器上使用SSL https,但浏览器返回ERR_SSL_PROTOCOL_ERROR

码:

var express = require('express');
var https = require('https');
var http = require('http');
var fs = require('fs');

var options = {
    key: fs.readFileSync('key.pem'),
    cert: fs.readFileSync('cert.pem')
}

http.createServer(app).listen(80);
https.createServer(options, app).listen(443);
Run Code Online (Sandbox Code Playgroud)

All*_*eck 6

如果您的密钥未正确生成,就会发生这种情况。

很多地方都会告诉你这样做:

openssl genrsa -out key.pem
Run Code Online (Sandbox Code Playgroud)

如果您使用的是 Mac,则此方法不起作用,您需要执行此操作以使密钥长度为 2048:

openssl genrsa -out key.pem 2048
Run Code Online (Sandbox Code Playgroud)

总之,请执行以下步骤在 Mac 上创建正确的密钥:

openssl genrsa -out key.pem 2048
openssl req -new -key key.pem -out client.csr
openssl x509 -req -in client.csr -signkey key.pem -out cert.pem
Run Code Online (Sandbox Code Playgroud)