IdHTTPServer开发https服务器

mac2022-06-30  237

IdHTTPServer开发https服务器

该篇经验同样适用于DATASNAP和UNIGUI,因为它们都基于INDY10。

1)需要TIdServerIOHandlerSSLOpenSSL控件

2)设置属性

3)OPENSSL生成自签名证书

X.509证书包含三个文件:key,csr,crt。

key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息 进OPENSSL目录 cd d:\openssl   设置配置文件 set OPENSSL_CONF=openssl.cfg   运行openssl openssl   生成服务器的私钥server.key genrsa -des3 -out server.key 2048   用server.key生成一个证书server.csr 生成的csr 文件交给CA机构签名后,形成服务器自己的证书。按照提示,提供服务器证书的相关信息。 req -new -key server.key -out server.csr   生成客户端的私钥client.key genrsa -des3 -out client.key 2048   用client.key 生成一个证书 req -new -key client.key -out client.csr   生成服务器证书 x509 -req -days 36500 -in server.csr -signkey server.key -out server.crt   生成客户端证书 x509 -req -days 36500 -in client.csr -signkey client.key -out client.crt   证书格式转换 #IE浏览器需要p12证书,所以需要签发p12证书,用于IE签发: openssl pkcs12 -export -clcerts -in client.crt -inkeyclient.key -out client.p12   #IOS 证书签发格式 openssl x509 -in client.crt -out client.cer   #Android 证书签发格式 openssl pkcs12 -export -in client.crt -inkey client.key -out client.pfx   #pem格式证书 openssl pkcs12 -export -in ddmdd_a.pfx -out client.pem    

4)绑定2个端口

IdHTTPServer1.Bindings.Add.Port := port; //http port IdHTTPServer1.Bindings.Add.Port := 6688; //https port

 5)设置证书

IdServerIOHandlerSSLOpenSSL1.SSLOptions.KeyFile:= ExtractFilePath(ParamStr(0)) + 'yn.key'; IdServerIOHandlerSSLOpenSSL1.SSLOptions.CertFile:= ExtractFilePath(ParamStr(0)) + 'yn.crt'; IdServerIOHandlerSSLOpenSSL1.SSLOptions.RootCertFile:= ExtractFilePath(ParamStr(0)) + 'yn.crt';

  6)准备ssleay32.dll和libeay32.dll文件

这2个文件,可以到DELPHI安装目录里面进行全文搜索,有。

中间件和客户端都需要这2个动态库文件。

因此INDY的SSL只支持MSWINDOWS平台,不支持LINUX、IOS、ANDROID平台。

 7)增加事件处理,密码是生成yn.key文件时输入的

procedure TidHttpSvr.IdServerIOHandlerSSLOpenSSL1GetPassword(var Password: string); begin Password := '123456'; end;

  

转载于:https://www.cnblogs.com/hnxxcxg/p/11264513.html

相关资源:Delphi中idHttp和HttpServer当客户端与服务器作数据传输的实例

最新回复(0)