<返回更多

给本地localhost建立安全HTTPS

2019-09-24    
加入收藏
给本地localhost建立安全HTTPS

 

概述

在前端开发领域某些特性下需要依赖HTTPS,例如:navigator.geolocation.getCurrentPosition / new Notification 等。

由于大多数开发环境中都只是HTTP协议下,所以会导致调试比较困难, 这个时候就需要给本地配置HTTPS了。

给本地配置SSL证书一般情况下都是自己 生成自签名CA证书 , 这种方式最大的问题就是无法建立安全, 然而这样并没有什么卵用。

给本地localhost建立安全HTTPS

 

为了解决这个问题, 这里使用了 mkcert。

mkcert是一个简单的零配置工具,可以使用您喜欢的任何名称制作本地可信赖的SSL开发证书,是google某位工程师用Go开发出来的。

安装mkcert

mac用户

brew install mkcert
brew install nss

windows用户

前提先安装 Chocolatey

choco install mkcert

安装CA

mkcert自动在系统根存储中创建并安装本地CA

mkcert -install

生成证书

每个域名以空格进行分割,下面3个本地域名基本是能够满足大部分场景的,除非使用IP

mkcert localhost 127.0.0.1 ::1

会在当前目录下生成2个文件,生成的证书有效期是10年,足够用了,并且可以给本地所有端口使用,所以只生成一次即可。

给本地localhost建立安全HTTPS

 

配置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分钟的事情。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>