热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

windowsserver2008为什么制作的网站打不开_??自签名证书的httpserver来了!

忍了一年多了,我最终打算对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/



推荐阅读
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • CentOS 7环境下Jenkins的安装与前后端应用部署详解
    CentOS 7环境下Jenkins的安装与前后端应用部署详解 ... [详细]
  • 在CentOS 7上部署WebRTC网关Janus
    在CentOS 7上部署WebRTC网关Janus ... [详细]
  • 在 Kubernetes 中,Pod 的调度通常由集群的自动调度策略决定,这些策略主要关注资源充足性和负载均衡。然而,在某些场景下,用户可能需要更精细地控制 Pod 的调度行为,例如将特定的服务(如 GitLab)部署到特定节点上,以提高性能或满足特定需求。本文深入解析了 Kubernetes 的亲和性调度机制,并探讨了多种优化策略,帮助用户实现更高效、更灵活的资源管理。 ... [详细]
  • Node.js 配置文件管理方法详解与最佳实践
    本文详细介绍了 Node.js 中配置文件管理的方法与最佳实践,涵盖常见的配置文件格式及其优缺点,并提供了多种实用技巧和示例代码,帮助开发者高效地管理和维护项目配置,具有较高的参考价值。 ... [详细]
  • 本文深入探讨了 hCalendar 微格式在事件与时间、地点相关活动标记中的应用。作为微格式系列文章的第四篇,前文已分别介绍了 rel 属性用于定义链接关系、XFN 微格式增强链接的人际关系描述以及 hCard 微格式对个人和组织信息的描述。本次将重点解析 hCalendar 如何通过结构化数据标记,提高事件信息的可读性和互操作性。 ... [详细]
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • 掌握PHP编程必备知识与技巧——全面教程在当今的PHP开发中,了解并运用最新的技术和最佳实践至关重要。本教程将详细介绍PHP编程的核心知识与实用技巧。首先,确保你正在使用PHP 5.3或更高版本,最好是最新版本,以充分利用其性能优化和新特性。此外,我们还将探讨代码结构、安全性和性能优化等方面的内容,帮助你成为一名更高效的PHP开发者。 ... [详细]
  • AppFog 是一个基于 CloudFoundry 的多语言 PaaS(平台即服务)提供商,允许用户在其平台上轻松构建和部署 Web 应用程序。本文将通过详细的图文步骤,指导读者如何在 AppFog 免费云平台上成功部署 WordPress,帮助用户快速搭建个人博客或网站。 ... [详细]
  • 本文详细解析了JSONP(JSON with Padding)的跨域机制及其工作原理。JSONP是一种通过动态创建``标签来实现跨域请求的技术,其核心在于利用了浏览器对``标签的宽松同源策略。文章不仅介绍了JSONP的产生背景,还深入探讨了其具体实现过程,包括如何构造请求、服务器端如何响应以及客户端如何处理返回的数据。此外,还分析了JSONP的优势和局限性,帮助读者全面理解这一技术在现代Web开发中的应用。 ... [详细]
  • 【前端开发】深入探讨 RequireJS 与性能优化策略
    随着前端技术的迅速发展,RequireJS虽然不再像以往那样吸引关注,但其在模块化加载方面的优势仍然值得深入探讨。本文将详细介绍RequireJS的基本概念及其作为模块加载工具的核心功能,并重点分析其性能优化策略,帮助开发者更好地理解和应用这一工具,提升前端项目的加载速度和整体性能。 ... [详细]
  • 利用PHP SDK高效接入新浪微博热搜榜单功能 ... [详细]
  • 手机号码归属地查询服务由 WebXml.com.cn 提供,通过其 WEB 服务接口(http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx)实现。该服务能够准确解析国内手机号码的归属地信息,适用于多种应用场景,如用户身份验证、市场分析等。 ... [详细]
  • 本章节深入探讨了 Webpack 命令的高级功能,涵盖了官方快速入门教程中未涉及的细节。通过实际操作和案例分析,对官方文档进行了详细解读与补充,帮助读者更好地理解和应用这些进阶技巧。 ... [详细]
  • 2018年热门趋势:轻松几步构建高效智能聊天机器人
    2018年,构建高效智能聊天机器人的简易步骤成为行业焦点。作为AI领域的关键应用,聊天机器人不仅被视为企业市场智能化转型的重要工具,也是技术变现的主要途径之一。随着自然语言处理技术的不断进步,越来越多的企业开始重视并投资于这一领域,以期通过聊天机器人提升客户服务体验和运营效率。 ... [详细]
author-avatar
KeNnyT0nGMM_934
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有