准备

  • win10系统
  • Chocolatey: win下的包管理工具,主要用于下载mkcert
  • mkcert: 一个用于生成locally-trusted本地开发证书工具
  • nodeJs: v16.1.0

Chocolatey包管理工具下载

这里提供我两种成功下的方法

方法一

  1. 打开chocolatey官网
  2. 找到INSTALLING CHOCOLATEY页面

官方下载页面
3. 在下拉框中找到适合自己的下载方案

下拉框中选择方案

  1. 根据官方提示操作(如下图)
    1. 创建installChocolatey.cmd文件,文件内容下方已给出
    2. 创建完毕文件,运行该文件。
    3. 运行choco -?命名查看是否已经安装生效

下载操作

方法二

  1. 以管理员的身份打开PowerShell的控制台

管理员身份启动powershell

  1. 设置PowerShell的ExecutionPolicy为Bypass或者AllSigned
1
Set-ExecutionPolicy Bypass -Scope Process -Force
  1. 启用TLS 1.2
1
[System.Net.ServicePointManager]::SecurityProtocol =[System.Net.ServicePointManager]::SecurityProtocol -bor 3072
  1. 下载、安装和测试
1
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
1
choco -?

两种方法大致一样选哪个都行,如果自己有特殊需求可以直接查看官网

安装mkcert

  1. 根据mkcert的GitHub提示使用choco下载

    记得使用管理员身份打开cmd

    1
    choco install mkcert

    cmd下载mkcert

  2. 验证mkcert

    验证mkcert

生成并安装证书

  1. 创建本地CA

    1
    mkcert -install

    生成CA
    注: 使用mkcert -CAROOT 命令查看CA生成的路径

  2. 创建localhost证书

    1
    mkcert localhost 127.0.0.1 ::1

    生成证书

  3. 导入CA
    把pem文件类型改为(改之前可以先备份)crt结尾文件(因为win上不识别pem)

    修改CA文件类型

    点击证书进行安装
    证书安装过程

nodejs启动HTTP2服务

  1. 创建http2项目
  2. 知道mkcert生成的证书(在生成并安装证书的第二步中已经知道,在管理员目录下),并移动到http2项目下的key目录
    存放证书的目录
  3. 启动http2服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const path = require('path');
const fs = require('fs');
const http2 = require('http2');

const server = http2.createSecureServer({
key: fs.readFileSync('./key/localhost+2-key.pem'),
cert: fs.readFileSync('./key/localhost+2.pem'),
});

server.on('error', (err) => console.error(err));

server.on('stream', (stream, headers) => {
stream.respond({
'content-type': 'text/html; charset=utf-8',
':status': 200
});
stream.end('<h1>kinghiee http2 demo</h1>');
});

server.listen(9000, function(){
console.log(`listening at https://localhost:9000`);
});

效果图
http2启动

如果问题欢迎指出 superhiee@163.com