IdHTTPServer開發https服務器


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;

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM