我在Node中使用Express框架.js创建一个web服务器.我想使用ssl连接web服务器.

创建https web服务器的代码如下所示.

var app = express.createServer({
  key: fs.readFileSync('./conf/key.pem'),
  cert: fs.readFileSync('./conf/cert.pem')
});
module.exports = app;

问题:如何创建密钥.express 需要pem和cert.pem吗?

推荐答案

您需要的两个文件是PEM编码的SSL证书和私钥.PEM编码的证书和密钥是Base64编码的文本,带有看起来像-----BEGIN RSA PRIVATE KEY-----或类似的开始/结束分隔符.

要创建SSL证书,首先需要生成私钥和证书签名请求,或CSR(也包含公钥).您可以通过多种方式实现这一点,但在OpenSSL中是这样做的.

openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem

这将导致您输入一个交互式提示以生成2048位RSA私钥和一个CSR,其中包含您在提示中 Select 输入的所有信息.(Note: Common Name is where you'll want to put the domain name you'll be using to access your site.)完成此操作后,您通常会将此CSR提交给受信任的证书颁发机构,一旦他们验证了您的请求,您将收到一份证书.

如果你不在乎你的证书是否可信(通常是出于开发目的),你可以创建一个自签名证书.为此,我们可以使用几乎相同的行,但我们将传递两个额外的参数.

openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem

这将为您提供证书(有效期为10年)和密钥对,您可以在发布的代码片段中使用.

Node.js相关问答推荐

RSA-SHA 256签名算法未按预期表现

对接Nestjs/VueJS应用程序

express返回意外的URL

无法使用NPM安装REDUX和DATEPPICER

如何使用多个参数完成

填充函数在Node.js和MongoDB中不起作用

谷歌应用程序脚本UrlFetchApp和nodejs-axios返回不同的结果;MyFitnessPal日记

即使卷已设置,Docker Nodemon 也不会热重载

如何从 Mongo Atlas 触发器向 GCP PubSub 发出经过身份验证的请求

Postgressql的BIGSERIAL自增序列,即使由于唯一约束错误没有创建行,也会自动增加

express 和 mongoose 的新密码不正确

Cloudflare 522 错误 - javascript 客户端连接到 node 服务器

如何防止 Chrome 通过 Selenium 崩溃?

Node.js 上的 CLI 应用程序如何通过 child_process 将选项值作为参数传递给 Shell 命令

表达限制资源属于特定用户的优雅方式

Node.js 大文件上传到 MongoDB 阻塞了事件循环和工作池

users.watch(在 gmail google api 中)如何收听通知?

这到底是什么';拒绝未经授权';对我来说是什么意思?

Node.js:socket.io 关闭客户端连接

如何在 node.js 沙箱中安全地运行用户提交的脚本?