2021年4月写过一个轻量级的web服务器HttpServer,见文章: 《HttpServer:一款Windows平台下基于IOCP模型的高并发轻量级web服务器》,但一直没有时间添加Openssl功能,也就是将HTTP拓展为HTTPS,从而提供安全访问功能。

没时间只是一方面,关键是集成openssl的难度也很大。

Windows的IOCP是一个高并发的异步IO模型,Openssl对异步IO支持的实现方式网上介绍的非常少,尤其是对IOCP模型。如果你的程序采用的是阻塞IO模型,使用openssl则非常简单,通过SSL_set_fd函数将socket和ssl绑定即可,后面的SSL握手和业务数据通信对于用户来说就是一个黑盒,openssl会帮你搞定所有的一切。显然,对于一个服务器而言,阻塞IO模型不是一个很好的选择。当然了,如果你不追求高性能,也可以采用多线程+IO阻塞模型的方式来实现一个服务器,从而可以方便的使用openssl。

去年12月26号,一位用户来信肯定了HttpServer的功能,同时也希望增加SSL(TLS)功能。这让我重新燃起了将Openssl集成到IOCP模型的信心(说明还是有人会用HttpServer,因此加上SSL功能也是有一定的意义)。通过几个星期的努力还是完成了此项功能,特此纪念。

HttpServer SSL版本下载地址

SSL配置

非常简单,几分钟而已。下载HttpServer SSL版本,解压后打开HttpServer.ini配置文件,在Section的[ssl]下进行证书和私钥的配置:如下图:

字段说明

use:是否使用SSL,0表示不使用,1表示使用;

CertificatePathFile:证书文件的全路径名;

PrivateKeyPathFile:私钥文件的全路径名;

Ciphers:加密套件配置规则,如:ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH,网上介绍很多,这里就不说明了;

PrivateKeyPassword:私钥文件的密码,如果私钥文件有口令(密码),则在此处配置;

为方便大家测试,我在压缩包中提供了cert.crt和privatekey.pem两个文件,由于是自己签发的,没有根证书授信,会被浏览器认为HTTPS连接不安全,要啥自行车。

启动服务

双击HttpServer.exe即可,默认端口号是443,该端口可通过ini配置文件进行修改。启动后如下:

说明

1、openssl使用的版本是 openssl 1.1.1i,亲自编译的一个版本,还冒着热气,x86的开发环境下载地址: openssl1.1.1i

2、由于HttpServer.exe中包含了打开其它进程的功能(调用CGI网关的执行文件,比如php和python程序),因此可能会被杀毒软件误认为是不安全的应用程序,可不必理会,特此说明。

3、我的所有下载服务都是由HttpServer提供,呵呵。

感谢您的使用!

HttpServer: 基于IOCP模型且集成Openssl的轻量级高性能web服务器的更多相关文章

  1. HttpServer:一款Windows平台下基于IOCP模型的高并发轻量级web服务器

    HttpServer的特点1.完全采用IOCP模型,实现真正的异步IO,高并发.高可靠: 2.支持4G以上文件下载: 3.支持断点续传: 4.轻量级,体积小,服务器文件仅200多K,无任何依赖库: 5 ...

  2. 基于 IOCP 的通用异步 Windows Socket TCP 高性能服务端组件的设计与实现

    设计概述 服务端通信组件的设计是一项非常严谨的工作,其中性能.伸缩性和稳定性是必须考虑的硬性质量指标,若要把组件设计为通用组件提供给多种已知或未知的上层应用使用,则设计的难度更会大大增加,通用性.可用 ...

  3. 搭建基于Linux6.3+Nginx1.2+PHP5+MySQL5.5的Web服务器全过程----转载

    之前的Web服务器都是通过yum搭建的,想要添加新模块或者更新某些软件都很不方便(牵一发而动全身啊!).所以,现在准备将环境改为源码编译安装,这样便于调整,性能上也会比yum方式好很多.以下是我的安装 ...

  4. ashx 集成于Ihandle 简易 高性能 web

    不用搞MV4..如果你用.ashx写的后台..自己加一个switch case就实现了路由...更方便,还不用配置   scaffold 不是dynamic data里面的东西吗   现在我全是ash ...

  5. 关于:基于http协议大文件断点续传上传至web服务器

    关键部分 前端用file.slice()分块 前端用FileReader获取每一分块的md5值 后端用MultipartFile接受分块文件 后端用FileOutputStream拼装分块文件 话不多 ...

  6. 搭建基于Linux6.3+Nginx1.2+PHP5+MySQL5.5的Web服务器全过程

    http://blog.chinaunix.net/uid-20639775-id-154497.html

  7. 【 Linux 】I/O工作模型及Web服务器原理

    一.进程.线程     进程是具有一定独立功能的,在计算机中已经运行的程序的实体.在早期系统中(如linux 2.4以前),进程是基本运作单位,在支持线程的系统中(如windows,linux2.6) ...

  8. 基于nginx实现web服务器的双机热备

    1.适用场景 对于部署重要的服务,会使用两台服务器,互相备份,共同执行同一服务.当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续提供服务.双机热 ...

  9. Server Develop (八) IOCP模型

    IOCP模型 IOCP全称I/O Completion Port,中文译为I/O完成端口.IOCP是一个异步I/O的Windows API,它可以高效地将I/O事件通知给应用程序,类似于Linux中的 ...

随机推荐

  1. bjdctf_2020_babyrop2(没有成功拿到shell)

    看到程序先例行检查一下 可以看到开启了canary和nx保护,需要注意的是这个acnary 将程序放入ida中shift+f12 没有关键性函数.我们进入main函数中 在main的gift程序里面我 ...

  2. 联盛德 HLK-W806 (九): 软件SPI和硬件SPI驱动ST7789V液晶LCD

    目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...

  3. 年度最受欢迎的开源CHROME插件

    又到了年底,时间过得飞快,每到年底就有各种各样的总结各种各样的奖项出来.前几天谷歌就公布了2021年年度最受欢迎Chrome插件名单,名单共有13个. 让很多网友费解的是,其中有很多并不是今年刚出现的 ...

  4. mpstat 查看多核CPU负载状态

    mpstat是Multiprocessor Statistics的缩写,是实时系统监控工具.其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中.在多CPUs系统里,其不但能查看所有 ...

  5. Learning to Sample

    此处主要提出几个疑问和想法: 疑问: 为什么需要这个匹配过程?虽然G可能不是P的子集,但是为什么一定需要他是子集呢? 如果一定要匹配的话,匹配过程是没法反向传播的,所以只可以在推理阶段使用,那么这个推 ...

  6. js(jQuery)获取自定义data属性的值

    有时候因为需要在标签上设置自定义data属性值, <div class="col-sm-6 col-md-4" id="get_id" data-c_id ...

  7. Elasticsearch删除所有数据

    使用post请求 POST http://localhost:9200/索引/标签/_delete_by_query?pretty { "query": { "match ...

  8. 页面调用百度地图但是使用了https证书之后不显示

    首先百度地图使用的都是http请求链接,但是安装了证书之后会觉得这个http不安全,所以默认请求失败 这时候我们在请求头添加 <meta http-equiv="Content-Sec ...

  9. 【LeetCode】245. Shortest Word Distance III 解题报告 (C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典+暴力检索 日期 题目地址:https://lee ...

  10. 【LeetCode】1033. Moving Stones Until Consecutive 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 脑筋急转弯 日期 题目地址:https://leet ...