nodejs如何用openssl创建https链接

412 阅读1分钟

https是什么?

https就是在http的基础上多了一个security层(传输层安全(Transport Layer Security,TLS)及其新继任者(Security Socket Layer,SSL)在互联网上提供保密安全信道的加密协议),相较于http,https用密钥对传输的数据进行了加密,于是就安全了许多。

我们可以用openssl做什么?

我们可以用openssl生成免费的密钥用来加密我们的http,具体介绍可以看:OpenSSL简介

具体步骤与代码

1、下载openssl,建议不要下官方源码,否则需要你自己再编译一遍。可以去这个网址:slproweb.com/products/Wi…

2、执行命令生成密钥(私钥和公钥,具体为啥要有公私钥,可以看这篇文章:zhuanlan.zhihu.com/p/43789231)

openssl genrsa -out key.pem

openssl req -new -key key.pem -out csr.pem

openssl x509 -req -days 9999 -in csr.pem -signkey key.pem -out cert.pem

3、代码编写,我用了nestjs框架,在main.ts中:

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import * as fs from 'fs';

const httpsOptions = {
  key: fs.readFileSync('./secrets/key.pem'),
  cert: fs.readFileSync('./secrets/cert.pem'),
};

async function bootstrap() {
  const app = await NestFactory.create(AppModule, {
    httpsOptions,
  });
  await app.listen(3000);
}
bootstrap();

注意在ts中用原生node模块的方式,也算一个小坑,如果是纯node,可以看官方的这篇文章:# How to create an https server?