文章插图
概述在前端开发领域某些特性下需要依赖HTTPS,例如:navigator.geolocation.getCurrentPosition / new Notification 等 。
由于大多数开发环境中都只是HTTP协议下,所以会导致调试比较困难, 这个时候就需要给本地配置HTTPS了 。
给本地配置SSL证书一般情况下都是自己 生成自签名CA证书 , 这种方式最大的问题就是无法建立安全, 然而这样并没有什么卵用 。
文章插图
【给本地localhost建立安全HTTPS】
为了解决这个问题, 这里使用了 mkcert 。
mkcert是一个简单的零配置工具,可以使用您喜欢的任何名称制作本地可信赖的SSL开发证书,是google某位工程师用Go开发出来的 。
安装mkcertmac用户
brew install mkcertbrew install nsswindows用户
前提先安装 Chocolatey
choco install mkcert安装CAmkcert自动在系统根存储中创建并安装本地CA
mkcert -install生成证书每个域名以空格进行分割,下面3个本地域名基本是能够满足大部分场景的,除非使用IP
mkcert localhost 127.0.0.1 ::1会在当前目录下生成2个文件,生成的证书有效期是10年,足够用了,并且可以给本地所有端口使用,所以只生成一次即可 。
文章插图
配置HTTPS有了证书之后就是配置的事情了,相当简单:
Nginx
server { listen 7777; server_name localhost; ssl on; root html; index index.html index.htm; # 把生成的证书路径引入进来即可 ssl_certificate ../localhost+2.pem; ssl_certificate_key ../localhost+2-key.pem; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { root /www; index index.html index.htm; }}node.js
Node不使用系统根存储,因此它不会自动接受mkcert证书 。必须设置 NODE_EXTRA_CA_CERTS 环境变量:
export NODE_EXTRA_CA_CERTS="$(mkcert -CAROOT)/rootCA.pem"const https = require('https');const fs = require('fs');const options = { key: fs.readFileSync('../localhost+2.pem'), cert: fs.readFileSync('../localhost+2-key.pem')};https.createServer(options, (req, res) => { res.writeHead(200); res.end('hello worldn');}).listen(8000);最后生成的证书只能用于本地测试,不要在线上使用 。
目前几乎所有的网站都开启了SSL,为了使自己在开发中方便调试,建议本地配置上,只是2分钟的事情 。
推荐阅读
- 梦见给别人洗头发周公解梦 梦见给别人洗头是什么预兆
- 芹菜炒牛肉,试着加点芬芳的陈皮,会给你一抹闪亮而难忘的味道
- 汽车空调不给力?一起来看看是哪里出了问题
- 海马体给化妆吗 海马体一次性化妆包里面都有什么东西
- 梦见小女孩拉屎我给擦粘我手上 梦见小女孩拉屎弄到我身上
- 旅游|清明假期7541.9万人次国内游 机票价格近三年最低:本地游成香饽饽
- 接亲可以直接接到酒店吗 家在本地可以在酒店接亲吗
- 结婚三金要给男方买戒指吗,女方买三金包括男方的戒指吗
- 梦见死去的人给自己打电话是怎么回事 梦到去世的人给自己打电话
- ajax——请求本地数据库