本地颁发 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.crtserver.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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值