本地颁发 SSL 证书,并开启 https 服务调试
目录
一、创建并设置根证书
1、生成名称为 myRootCA.key 的秘钥文件
2、生成名称为 myRootCA.pem 的根证书
3、设置你PC信任该根证书。
二、创建本地服务证书
1、为本地服务创建秘钥
2、生成本地服务证书
3、至此生成的文件如下
三、开启本地 https 服务(两种示例)
1、http-server
2、以 Node.js 下 Express 应用程序为例
首先找一个空文件夹,并在此路径下打开bash。
注:此方式生成的证书仅限用于本地测试,不可用于生产环境。
一、创建并设置根证书
1、生成名称为 myRootCA.key 的秘钥文件
openssl genrsa -des3 -out myRootCA.key 2048
注:2048 是 RAS-2048
会提示输入一个密码,请自行记住该密码,后续生成根证书会用到。
2、生成名称为 myRootCA.pem 的根证书
openssl req -x509 -new -nodes -key myRootCA.key -sha256 -days 1024 -out myRootCA.pem
注:1024 是证书有效期天数
使用上一步生成的秘钥和密码生成根证书,期间会提示输入一些内容,如下图:
3、设置你PC信任该根证书。
打开“钥匙串访问”应用,在系统--证书--文件--导入项目,选择上一步生成的根证书 myRootCA.pem。
这一步非常重要,一定要选择始终信任,如下图:
二、创建本地服务证书
1、为本地服务创建秘钥
先创建一个名称为 server.cnf 配置文件:
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn[dn]
C=CN
ST=libra
L=libra
O=libra
OU=My Local Server
emailAddress=example@domain.com
CN = localhost
再使用上面的配置,生成秘钥:
openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config <(cat server.cnf)
2、生成本地服务证书
先创建 v3.ext 文件,指定 subjectAltName:
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names[alt_names]
DNS.1 = localhost
再使用前面创建的根证书和v3.ext 签发 localhost 的本地服务证书(X509 v3证书),生成 server.crt。
openssl x509 -req -in server.csr -CA myRootCA.pem -CAkey myRootCA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile v3.ext
3、至此生成的文件如下
三、开启本地 https 服务(两种示例)
1、http-server
先安装 http-server 模块:
npm i http-server -g
再将上面生成的 server.crt 和 server.key 拷贝到你要调试的文件夹,并运行如下命令
http-server -S -C server.crt -K server.key -p 8081
即可访问 https://localhost:8081
2、以 Node.js 下 Express 应用程序为例
找到你要测试的文件夹,先安装 express 模块:
npm i express
在创建 server.js 文件:
const path = require('path')
const fs = require('fs')
const express = require('express')
const https = require('https')const certOptions = {key: fs.readFileSync(path.resolve('./server.key')),cert: fs.readFileSync(path.resolve('./server.crt'))
}const app = express()const server = https.createServer(certOptions, app).listen(443)
启动程序:
node server.js
访问:https://localhost:443
本地颁发 SSL 证书,并开启 https 服务调试
目录
一、创建并设置根证书
1、生成名称为 myRootCA.key 的秘钥文件
2、生成名称为 myRootCA.pem 的根证书
3、设置你PC信任该根证书。
二、创建本地服务证书
1、为本地服务创建秘钥
2、生成本地服务证书
3、至此生成的文件如下
三、开启本地 https 服务(两种示例)
1、http-server
2、以 Node.js 下 Express 应用程序为例
首先找一个空文件夹,并在此路径下打开bash。
注:此方式生成的证书仅限用于本地测试,不可用于生产环境。
一、创建并设置根证书
1、生成名称为 myRootCA.key 的秘钥文件
openssl genrsa -des3 -out myRootCA.key 2048
注:2048 是 RAS-2048
会提示输入一个密码,请自行记住该密码,后续生成根证书会用到。
2、生成名称为 myRootCA.pem 的根证书
openssl req -x509 -new -nodes -key myRootCA.key -sha256 -days 1024 -out myRootCA.pem
注:1024 是证书有效期天数
使用上一步生成的秘钥和密码生成根证书,期间会提示输入一些内容,如下图:
3、设置你PC信任该根证书。
打开“钥匙串访问”应用,在系统--证书--文件--导入项目,选择上一步生成的根证书 myRootCA.pem。
这一步非常重要,一定要选择始终信任,如下图:
二、创建本地服务证书
1、为本地服务创建秘钥
先创建一个名称为 server.cnf 配置文件:
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn[dn]
C=CN
ST=libra
L=libra
O=libra
OU=My Local Server
emailAddress=example@domain.com
CN = localhost
再使用上面的配置,生成秘钥:
openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config <(cat server.cnf)
2、生成本地服务证书
先创建 v3.ext 文件,指定 subjectAltName:
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names[alt_names]
DNS.1 = localhost
再使用前面创建的根证书和v3.ext 签发 localhost 的本地服务证书(X509 v3证书),生成 server.crt。
openssl x509 -req -in server.csr -CA myRootCA.pem -CAkey myRootCA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile v3.ext
3、至此生成的文件如下
三、开启本地 https 服务(两种示例)
1、http-server
先安装 http-server 模块:
npm i http-server -g
再将上面生成的 server.crt 和 server.key 拷贝到你要调试的文件夹,并运行如下命令
http-server -S -C server.crt -K server.key -p 8081
即可访问 https://localhost:8081
2、以 Node.js 下 Express 应用程序为例
找到你要测试的文件夹,先安装 express 模块:
npm i express
在创建 server.js 文件:
const path = require('path')
const fs = require('fs')
const express = require('express')
const https = require('https')const certOptions = {key: fs.readFileSync(path.resolve('./server.key')),cert: fs.readFileSync(path.resolve('./server.crt'))
}const app = express()const server = https.createServer(certOptions, app).listen(443)
启动程序:
node server.js
访问:https://localhost:443