前言 链接到标题

在当今这个数字化日益增长的世界中,网络安全变得比以往任何时候都更为重要。特别是在数据传输过程中,确保通信的安全性是至关重要的。正因如此,HTTPS(超文本传输安全协议)成为了一个不可或缺的标准,它通过对传输的数据进行加密来保护我们的信息安全。在本文中,我们将探讨如何在fphttpserver中启用HTTPS支持,确保你的Lazarus后端应用程序可以安全地发送和接收数据。

(开头需要高端大气上档次,但不符合本人这种学渣的特质,上面这段话是AI生成的)

Free Pascal的文档中我没有找到关于这部分的具体说明,FPC源码中给出的fcl-web的示例中也没有给出易懂的示范,所以编写了这篇文章。

效果演示 链接到标题

这部分包含了源码,如果你懒得往下看就直接从图片里看怎么写吧。

图片

准备工作 链接到标题

准备好你的证书。这里我使用某网站在线生成的证书用于测试,并放在了项目目录下的localhost目录中。

创建组件 链接到标题

请确保你已经在Lazarus中安装了内置的lazweb包,以把FPHttpServer控件拖放在窗口上。

当然你也可以手动创建一个变量用于放置这个HTTP服务器。

请记得修改下图中红框标出的属性(HostName和UseSSL)

图片

修改属性 链接到标题

为你的HTTP服务器设置证书的路径和密钥的路径。例如:

FPHttpServer1.CertificateData.Certificate.FileName := Application.Location+PathDelim+'localhost'+PathDelim+'localhost.pem';
FPHttpServer1.CertificateData.PrivateKey.FileName := Application.Location+PathDelim+'localhost'+PathDelim+'localhost.key';

启用服务器 链接到标题

在应用程序完成以上操作后执行:

FPHttpServer1.Active := true;

以及为服务器设置对客户端的响应:

procedure TForm1.FPHttpServer1Request(Sender: TObject;
  var ARequest: TFPHTTPConnectionRequest;
  var AResponse: TFPHTTPConnectionResponse);
begin
  AResponse.Content := 'HelloWorld';
  Label1.Caption := ARequest.RemoteAddress;
end;

使用OpenSSL 链接到标题

在你的lpr文件的开头引用opensslsockets。另外如果你使用的系统为Windows系统,需要在系统中安装OpenSSL。倘若无法保证极其是否安装OpenSSL,请把两个关键的DLL文件放在编译出来的EXE文件一起,并向客户一同分发。

如果不进行这一步操作,会出现与SSLSocket有关的报错。

图片

测试 链接到标题

完成以上操作后,编译并运行应用程序。

在浏览器中打开监听的地址,随后能看到可以访问。

连接重置 链接到标题

如果你使用的端口不是443,你需要在地址栏中指定协议为https而不是http。