windows server 2008为什么制作的网站打不开_??自签名证书的http-server来了!

d723e8d56b13463bb17be94f688c71a9.png

忍了一年多了,我最终打算对http-server进行魔改。

本文面向的读者朋友:
前端开发工程师、测试工程师、其它需要内网静态文件服务的软件开发人员。

看过我以前文章的老铁都知道,傲天君是一名前端开发工程师。做前端吗,经常会做一些demo页面,然后把demo页面发给产品,测试以及领导看看。

所以我经常使用一款工具就是http-server,它是一款非常火爆的nodejs库,可以在命令行快速地搭建一个http/https静态文件服务

因为我做的开发业务大部分涉及webRTC方面,所以我需要启用了https的静态文件服务。这是因为浏览器的安全限制。要求涉及请求用户电脑摄像头、麦克风、桌面视频流等等浏览器权限时候,你的网页必须是https开头的,也就是不能是http开头的。

当然你的https证书是不是有问题,浏览器不关心。自签名的证书同样是允许的,只要测试用户接受安全警告就可以了。(如下图所示,点击继续访问,表示我明白并接受这个风险)

88ea2493b1d02ca395b34c31e0657d7f.png
自签名or证书不正确的https网站
说个题外话,我记得我上大学那几年(12-16年),咱们的12306网站一直都有这个证书问题,我实在搞不明白为啥子12306就是不修复呢?

好吧,回到http-server主题,那么我为什么要魔改它呢?

因为它的https启动方式实在是太麻烦了!

我先上个命令行代码给大家感受一下:

http-server -p 8080 -S -K path/to/your/key.pem -C path/to/your/cert.pem

我知道各位老铁都知道各个参数的含义,但是我还是想解释一下各个参数:

-p 8080 表示静态文件服务占用本机的8080端口
-S 表示开启https服务,不指定该参数的话,默认是http服务
-K 与 -C 就是指定证书的私钥与密钥了

我第一次使用的时候,以为 -K-C参数可以不设置,然后http-server给我一次重拳出击!

456a3b203eb1b363c7c6f73288a8fab7.png

难受!http-server必须要求我提供证书的私钥与密钥!

我当时就纳闷了,你这个工具本来就是开发测试阶段使用的,一般情况哪来的证书啊?就算有证书也都是自签名的证书,http-server 就不能在内部自己生成一个自签名的证书吗?

还别说,关于这个问题还真有老铁在http-server的讨论里面反馈,并且有老铁还把代码写好了,提交给官方组织,但是!!官方认为http-server不应该自动创建自签名证书!! (当然这个老铁写的代码质量也有点问题)

904c755734ebacbda67ffa598e31a206.png

用我的Google翻译拙劣地美化一下:

cdcb1ef9a4d6cb31277b69c11083a8f6.png

难受啊!没办法了,我傲天君决定魔改你们的http-server了。

是的,当我写这篇文章的时候,我已经把代码写好了,它就是http-server-v2:

https://github.com/AJLoveChina/http-server-v2​github.com

http-server-v2的使用参数与http-server 完全一模一样!!

所以你不用担心有额外的学习成本。

但是http-server-v2可以帮你自动生成自签名证书,如果你没有指定证书的话!

我们来看一看怎么使用的!

(Tip : 当各位老铁看到这篇文章的时候,项目已经更名为hs2,应官方的要求,但是功能都一样)

安装

没有问题,这很简单。

 npm install -g hs2

对于非前端玩家,需要安装nodejs[1],npm是nodejs的包管理工具,nodejs在windows下安装非常简单,傻瓜式,path自动添加到系统变量里面,安装后开箱即用。

使用

hs2 -S      #一个https服务就诞生了! 
hs2 -p 8080 #一个简单的8080端口的http服务, 完全向后兼容 http-server 

这里解释一下,为什么使用hs2而不是以前的http-server or hs 命令?

很简单, http-server-v2决定使用 hs2 作为命令名称。这样你就可以在你的电脑既安装http-server,又安装 http-server-v2

5b968ee678ab0deace1d2643ee3b74ec.png

结尾

希望这个工具各位开发者老铁会喜欢,关于实现的细节也很简单。

就是当-S模式的使用,判断有没有可用的证书,如果没有可用的证书就自动创建一个自签名证书。自签名证书的生成算法使用了第三方库 selfsigned 。我看了它们的代码,优雅&&简洁。

代码参考了著名的webpack-dev-server ,搞webpack那一套的老铁都知道这个插件,它就支持自动生成自签名证书然后提供https服务。我看了他们的代码,才知道原来有selfsigned这个工具,我以前还误以为dev-server自己实现了一套生成证书算法呢。

类似Tomcat这样的容器也能实现http-server-v2的部分功能,但是没有http-server-v2方便,因为Tomcat需要把文件放到它的webapps目录下,而http-server-v2是非侵入式的,命令行切换到需要静态文件服务的文件夹,一行命令就服务!

TODO

  • 支持detached mode,即可以后台运行,计划使用pm2。方便在linux机器上面使用。
  • 搞个帅气一点的LOGO,但是我不会UI设计啊。。。

更新

  • 2020年3月18日

昨天官方成员BigBlueHat给我评论,建议我不要使用http-server-v2这样的名称,因为这看起来会让别人觉得它是http-server官方的一个项目,那好吧~ 换个名字吧,就叫hs2

1cbb92e30fa426ccbc7cd10ec44366a9.png

So 就是这样, bye~

霸都丶傲天 write on 2020年3月17日

题外话

  • 什么是静态文件服务?静态文件服务能帮助我做什么?
静态文件服务就是提供静态文件访问的服务。什么是静态文件?你电脑上的任何文件都是静态文件,用这个服务可以让内网中的其它用户通过浏览器访问你电脑的文件,也可以部署你的html代码(最常用)。
比如,你想发送一个doc文档给你的同事小张,那么你只要在这个doc文档的所在目录运行 hs2 ,然后hs2会在控制台提示你浏览器访问该文件的网址是多少。之后你把这个网址发送给小张就可以了,他可以享受内网的飞速下载(一般都是10MB/s以上的下载速度)
如果你觉得发送一个doc文档用QQ就可以完成,那么对于很大的文件,QQ可能就不是那么好用了。而且许多大公司不允许使用QQ发送文件,因为这样不安全。一般这样的大公司诸如华为、滴滴、腾讯都有自己的内部腾讯软件。比如华为的Espace,腾讯的腾讯通。我都用过,它们最大的问题就是传输速度极慢,让人发指。尤其是腾讯通,我都搞不明白你的QQ都支持内网文件传输,为什么你的腾讯通都不支持,而且腾讯通还是企业版QQ。。。

相关文章

霸都丶傲天: 内部网络最快无限制的文件传输共享工具,比扣扣vx还要方便, unbelievable,盘它!​zhuanlan.zhihu.com
25d1ca81f2ba97d722032c4af7d38337.png

参考

  1. ^nodejs官方下载地址 https://nodejs.org/en/download/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值