实现KbmMw web server 支持https

简介: 在以前的文章里面介绍过kbmmw 做web server. 前几天红鱼儿非要我给他做一个支持https 的web server. 其实kbmmw 支持https 有好几种方法: 1. 使用isapi 部署到iis 或者是apache 上,使用iis 或apache 的https 功能; 2.通过代理方式,使用使用iis 或apache 的https 功能。

在以前的文章里面介绍过kbmmw 做web server.

前几天红鱼儿非要我给他做一个支持https 的web server.

其实kbmmw 支持https 有好几种方法:

1. 使用isapi 部署到iis 或者是apache 上,使用iis 或apache 的https 功能;

2.通过代理方式,使用使用iis 或apache 的https 功能。

 

今天通过kbmmw 的原生indy 方式实现一下https 支持。

由于是测试,不可能使用真正的证书服务。要应用到商业使用,要申请商用证书。

这里只是说明实现方式。

 

首先我们利用我们以前的web server 程序。

 

这服务器上加一个TkbmMWTCPIPIndyServerTransport,改名为sslt, 设置绑定端口443, 同时streamformat

设为AJAX.

并设置事件:

procedure TForm1.ssltConnect(AContext: TIdContext);
begin
  if AContext.Connection.IOHandler is TIdSSLIOHandlerSocketBase then
       TIdSSLIOHandlerSocketBase(AContext.Connection.IOHandler).PassThrough:=false;
end;

再放一个TIdServerIOHandlerSSLOpenSSL ,设置必要的参数如图;

注意,在单元引用里面要加入 IdContext 。

现在应该可以编译通过,但是ssl 还没有起作用。

 

现在需要为ssl 生成相关的key 与证书文件。

 

由于indy 是用openssl 实现证书的。我们先要下载一个openssl.

没有Linux ,就直接使用官网上的windows 版。

在这里下载http://www.openssl.org/related/binaries.html

我下载的文件名为Win32OpenSSL-1_0_1h.exe。

安装到系统上,运行就会出现黑窗口。

 

输入命令 genrsa -des3 -out kbmmw.key 1024

屏幕让输入key 的密码,随便输一个字符串。这里是xalion.要输两次,保持一致就可以了。

现在生成了key 文件,继续努力,生成证书文件。

把openssl 目录里面的openssl.cfg 拷贝一份,命名为openssl.cnf.

还是命令行:

 req -new -x509 -days 365 -key kbmmw.key -out kbmmw.crt -config openssl.cnf

 

输入密码,然后填入相应的国家、组织、名字、邮件等信息。

填完后,就生成了证书。

 

把这两个文件放到一个固定的目录。

例如d:\crt.

回到前面我们的delphi 程序。

开始设置相关的属性。

并加入事件。

procedure TForm1.sslGetPassword(var Password: string);
begin
    Password:='xalion';
end;

 

最后要把ssl 处理挂接到sslt 对象上。

在服务器激活前,加入下面代码:

  sslt.IdTCPServer.IOHandler:=ssl;

 如图

 

ok, 所有的东西都设置完了,准备发射。

编译运行,启动服务器。

 

注意,你的机器上一定要把开着443 端口的程序关掉。例如vmware.

在浏览器里面输入https://127.0.0.1.

第一次会出现

说明这个证书是假的,同时说明我们的系统工作正常了。

确认这个例外。

就可以通过https 正常访问web 了

 

 

好了,就这么多了。

目录
相关文章
|
1月前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
49 3
|
7月前
|
应用服务中间件 nginx
【报错】Failed to start A high performance web server and a reverse proxy server.
【报错】Failed to start A high performance web server and a reverse proxy server.
527 2
|
23天前
|
缓存 安全 网络安全
HTTP/2与HTTPS在Web加速中的应用
HTTP/2与HTTPS在Web加速中的应用
|
1月前
|
前端开发 安全 应用服务中间件
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第26天】随着互联网的快速发展,前端性能调优成为开发者的重要任务。本文探讨了HTTP/2与HTTPS在前端性能优化中的应用,介绍了二进制分帧、多路复用和服务器推送等特性,并通过Nginx配置示例展示了如何启用HTTP/2和HTTPS,以提升Web应用的性能和安全性。
33 3
|
2月前
|
安全 网络协议 算法
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
195 4
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
|
2月前
|
网络协议 Windows
Windows Server 2019 Web服务器搭建
Windows Server 2019 Web服务器搭建
|
4月前
|
开发者 前端开发 Apache
Apache Wicket Ajax揭秘:轻松几步,让你的Web应用告别“呆板”,焕发新生!
【8月更文挑战第31天】随着互联网技术的发展,Web应用的交互性成为评价网站成功的关键指标。Apache Wicket作为一款卓越的Java Web框架,不仅具备强大的组件化开发能力,还内置了对Ajax技术的支持,使开发者能轻松提升Web应用的交互体验。通过简单的代码示例展示了如何在不刷新页面的情况下异步更新页面元素,极大提升了用户体验。Wicket提供了多种Ajax组件和行为,如AjaxFallbackLink、AjaxButton等,满足不同场景需求,并支持自定义Ajax行为,帮助开发者实现复杂交互效果。合理运用Wicket的Ajax功能,可显著增强网站竞争力。
45 0
|
4月前
|
C# 开发者
全面提升开发效率:详解如何使用Blazor Server与SignalR打造实时Web应用,从零开始构建聊天室示例并掌握实时通信核心技术
【8月更文挑战第31天】提高生产力不仅关乎效率提升,更在于用更少时间完成更多任务。本文将通过具体代码示例,介绍如何结合 Blazor Server 和 SignalR 构建实时 Web 应用。从创建 Blazor 项目到添加 SignalR 支持,再到实现客户端与服务器间的实时通信,每个步骤都详细讲解。通过这一组合,C# 开发者能获得前后端一致的编程体验,轻松打造高效、响应迅速的实时应用。实时通信功能已在社交、协作等多个领域发挥重要作用,本文将助你掌握这一强大技术组合。
102 0
|
4月前
|
Linux Python
【Azure 应用服务】Azure App Service For Linux 上实现 Python Flask Web Socket 项目 Http/Https
【Azure 应用服务】Azure App Service For Linux 上实现 Python Flask Web Socket 项目 Http/Https
|
6月前
|
tengine 安全 应用服务中间件
修改Nginx/Tengine版本名称伪装任意WEB SERVER
修改Nginx/Tengine版本名称伪装任意WEB SERVER