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?