delphi XE基于SSL的HTTPS服务器应用程序的认证文件(Certificate.cer、CACertificate1.cer、PrivateKey.key及OnGetPassword)的配置
https://download.csdn.net/download/pulledup/12362510 :在此下载源代码
现在主流的移动操作系统及各大应用APP的生态环境(比如腾讯应用宝、华为应用市场、百度应用市场等以及国外苹果App Store、谷歌商店Android Market等),为了保证用户的隐私和网络的安全请求、会话及数据传输等链路的信息安全,防止网络诈骗等,均要求开发者开发的APP必须支持SSL进行Https应用的访问,很多原来用delphi开发的App上架和升级都遇到麻烦,但很多同学不知怎样进行SSL的安装和https服务器应用的配置,本文轻松解决你的问题。
一、概念
SSL(Secure Sockets Layer安全套接层,属协议层),其继任者TLS传输层安全(Transport Layer Security:TLS:属协议层)是为网络通信提供安全及数据完整性的一种安全协议。
TLS与SSL在传输层与应用层之间对网络连接进行加密提供协议(:协议:标准和规范)。
二、配置方法1:创建服务器应用程序的过程中配置和测试
三、方法2:在你的服务器应用程序的代码中进行应用程序级别的配置:
1、将上述三个 SSL认证所必须的文件放入你的应用的根,或直接在项目中分发出去;
2、服务器应用程序的主窗体中加入代码:
procedure TfmxMain.FormCreate(Sender: TObject);
var
LIOHandleSSL: TIdServerIOHandlerSSLOpenSSL;
LScheduler_SessionsThreadPool :TIdSchedulerOfThreadPool;
begin
//1.产生Indy桥接服务器(即:Indy服务器的Http(s)协议的Web代理的连接器)
//:TIdHTTPWebBrokerBridge的实例FServer:
//:1、桥接了Indy的协议层和DataSnap的:
//:Web.HTTPApp(协议)、Web.WebReq(web请求)、Web.WebBroker(web代理)
//:Indy的网络协议层(Http和Https)非常成熟
//:Indy桥接服务器单元(即:Indy服务器的Http(s)协议的Web代理的连接器单元):
//:桥接了Indy的协议层及少数内核层和DataSnap的Web.HTTPApp(协议)、Web.WebReq(web请求)、Web.WebBroker(web代理)
//:Indy的网络协议层非常成熟
//:Indy的协议层:IdCustomHTTPServer
//:Indy的少数内核层:IdContext, IdException, IdTCPServer, IdIOHandlerSocket,
//:2、DataSnap的桥接具体用于:桥接ServerContainerUnit1.pas下的
//:TDSServer:即Datasnap.DSServer.pas下的DS服务器:
//:用于管理服务器类TDSServerClass和传输层的创建和生命周期:
//:TDSServerClass:用于为远程客户端调用发布服务器端的方法ServerMethodsUnit1.pas:
FServer := TIdHTTPWebBrokerBridge.Create(Self);
//2.为桥接服务器TIdHTTPWebBrokerBridge实例化1个:
//:Indy SSL的输入输出处理器TIdServerIOHandlerSSLOpenSSL(协议层):
LIOHandleSSL := TIdServerIOHandlerSSLOpenSSL.Create(FServer);
//3.Indy SSL的输入输出处理器TIdServerIOHandlerSSLOpenSSL(协议层):
//:打开SSL证书文件并验证证书密码:
LIOHandleSSL.SSLOptions.CertFile := 'Certificate.cer';
LIOHandleSSL.SSLOptions.RootCertFile := 'CACertificate1.cer';
LIOHandleSSL.SSLOptions.KeyFile := 'PrivateKey.key';
LIOHandleSSL.OnGetPassword := OnGetSSLPassword;
//:证书文件路径错了,则会报错:
//Could not load certificate.
//error:0B084002:x509 certificate
//routines:x509_load_cert_clr_file:system lib
//4.桥接服务器TIdHTTPWebBrokerBridge配置其输入输出处理器:
//:为Indy SSL的输入输出处理器:
FServer.IOHandler := LIOHandleSSL;
//:概念:SSL(Secure Sockets Layer安全套接层,属协议层),其继任者TLS传输层安全(Transport Layer Security:TLS:属协议层)是为网络通信提供安全及数据完整性的一种安全协议
//:TLS与SSL在传输层与应用层之间对网络连接进行加密提供协议(:协议:标准和规范)
FServer.ListenQueue:=1000;
//{ //:根据情况自行加入:
LScheduler_SessionsThreadPool:=TIdschedulerOfThreadPool.Create(FServer);
//:产生并启动indy线程池实例
LScheduler_SessionsThreadPool.PoolSize := 1000;
//:修改增加线程池大小PoolSize
FServer.Scheduler := LScheduler_SessionsThreadPool;
//}
end;
procedure TfmxMain.OnGetSSLPassword(var APassword: String);
//你申请的SSL证书文件的密码:
begin
APassword := 'A******';
end;
附相关文章:
ssl证书绑定windows服务器端口及SSL配置命令详解及下载:
https://blog.csdn.net/pulledup/article/details/106056206
delphi XE Restful:RestClien案例RESTDebugger.dproj和RESTDemos.dproj的调用参数及格式设置:
https://mp.csdn.net/console/editor/html/104242744
delphi Restful:客户端实现的四种方式及其比较:
https://blog.csdn.net/pulledup/article/details/104132753
delphi XE应用Restful时Rest组件的delphi XE ContentType即delphi XE mime type怎样获取和表达:
https://blog.csdn.net/pulledup/article/details/105749158
喜欢的话,就在下面点个赞、收藏就好了,方便看下次的分享: