热门标签 | 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/



推荐阅读
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
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社区 版权所有