php中文网 | cnphp.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 413|回复: 0

使用本地自签名证书为 React 项目启用 https 支持

[复制链接]

2672

主题

2679

帖子

9503

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
1
威望
0
积分
6709
贡献
0
注册时间
2021-4-14
最后登录
2024-5-19
在线时间
674 小时
QQ
发表于 2022-5-8 09:49:22 | 显示全部楼层 |阅读模式
简介
现在是大前端的时代,我们在本地开发 React 项目非常方便。这不是本文的重点,今天要分享一个话题是,如何为这些本地的项目,添加 https 的支持。为什么要考虑这个问题呢?主要有几个原因

如果该项目需要调用下层的 API, 并且该 API 是用 https的,则要求前端项目也用 https
如果你为 Teams 或者 Office 开发应用,他们要求这些应用必须用 https
本文参考了官方文档 https://create-react-app.dev/docs/using-https-in-development/,并且用更加详细的步骤带领大家完成实验。

创建并React项目
[mw_shl_code=applescript,true]npx create-react-app --template typescript testapp
cd testapp
npm start
[/mw_shl_code]
我们会看到再熟悉不过的默认的React项目的那个模板效果,默认在 http://localhost:3000 这个地址访问
image.png
如果你想启用 https,其实有一个简单的办法就是用 ($env:HTTPS = "true") -and (npm start) 替换上面的那句 npm start即可
image.png
请注意,你现在已经可以用 https://localhost:3000 去访问它了。但很显然这个证书是无效的。下面就继续来学习如何创建自定义证书并且用它来绑定到我们的应用端口上来。

安装自签名证书工具
推荐使用 mkcert,我一般会用 choco 这个工具来安装,请参考我的步骤
[mw_shl_code=applescript,true]# 请在管理员模式下打开Powershell

Set-ExecutionPolicy Bypass -Scope Process -Force; `
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;`
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

choco install mkcert -y
[/mw_shl_code]
安装证书信任机构(CA)
mkcert -install

创建证书
[mw_shl_code=applescript,true]# 创建一个用来保存证书文件的目录
mkdir -p .cert
# 可以一次性为多个域名创建证书,这个非常强大
mkcert -key-file ./.cert/key.pem -cert-file ./.cert/cert.pem "localhost" "dev.teamsapp.local"
[/mw_shl_code]
使用证书来启动当前项目
在当前项目根目录下面创建一个 .env 文件,填写如下的内容
[mw_shl_code=applescript,true]HTTPS=true
SSL_CRT_FILE=.cert/cert.pem
SSL_KEY_FILE=.cert/key.pem
[/mw_shl_code]
然后,直接还是运行 npm start ,你会发现默认打开的 https://localhost:3000 已经带有合法的证书了
image.png





上一篇:面试突击45:为什么要用读写锁?它有什么优点?
下一篇:镜像分层原理及容器层写时复制
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|php中文网 | cnphp.com ( 赣ICP备2021002321号-2 )

GMT+8, 2024-5-20 03:11 , Processed in 0.153537 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

申明:本站所有资源皆搜集自网络,相关版权归版权持有人所有,如有侵权,请电邮(fiorkn@foxmail.com)告之,本站会尽快删除。

快速回复 返回顶部 返回列表