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提供,呵呵。

感谢您的使用!

最新文章

  1. 使用git提交中删除idea
  2. Ext.NET-布局篇
  3. chrom_input_click
  4. editplus如何插入当前时间_Ctrl+D
  5. Window下配置NodeJs环境详解
  6. EntityFrame6在本地可以正常使用,部署到IIS后报异常(Additional information: The underlying provider failed on Open.)
  7. ajax post提交数据, input type=submit 返回prompt aborted by user
  8. ASP.NET MVC 下 引用阿里巴巴和IconFont字体路径404问题
  9. 自签名SSL生成
  10. Socket.io 延伸
  11. kali linux 忘记root密码重置办法
  12. Webdriver+Java实现使用cookie跳过登录
  13. 揭秘Socket与底层数据传输实现
  14. 哈尔滨理工大学第六届程序设计团队 H-Permutation
  15. 【一天一道LeetCode】#58. Length of Last Word
  16. vscode Live Server使用
  17. linux运行python程序
  18. 20180821 Python学习笔记:如何获取当前程序路径
  19. CSS 边框样式
  20. rpm软件包、yum软件仓库、systemd初始化进程

热门文章

  1. LET函数(Excel函数集团)
  2. android 基于dex的插件化开发
  3. JAVA使用反射获取对象的所有属性名
  4. RPA项目POC指南:概念、步骤与技巧
  5. c++设计模式概述之工厂
  6. 【LeetCode】982. Triples with Bitwise AND Equal To Zero 解题报告(C++)
  7. 【LeetCode】594. Longest Harmonious Subsequence 解题报告(Python & C++)
  8. 【LeetCode】807. Max Increase to Keep City Skyline 解题报告(Python &C++)
  9. wordpress中遇到的问题
  10. wiodows /linux CMD