본문 바로가기
DELPHI(델파이)

[델파이 - DELPHI] INDY HTTP, TCP TLS 1.2 사용

by Jcoder 2020. 11. 24.

uses

  IdSSLOpenSSL, Vcl.StdCtrls, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdBaseComponent,
   IdComponent, IdTCPConnection, IdTCPClient, IdHTTP

 

procedure TForm7.Button1Click(Sender : TObject);

var

  IdHTTP : TIdHTTP;

  IdSSLIOHandlerSocketOpenSSL : TIdSSLIOHandlerSocketOpenSSL;

begin

  IdHTTP                      := TIdHTTP.Create(self);

  IdSSLIOHandlerSocketOpenSSL := TIdSSLIOHandlerSocketOpenSSL.Create(self);

  try

    IdHTTP.IOHandler                                   := IdSSLIOHandlerSocketOpenSSL;

    IdSSLIOHandlerSocketOpenSSL.Host                   := '127.0.0.1';

    IdSSLIOHandlerSocketOpenSSL.Port                   := 443;

    IdSSLIOHandlerSocketOpenSSL.SSLOptions.CertFile    := 'cert 파일 경로';

    IdSSLIOHandlerSocketOpenSSL.SSLOptions.KeyFile     := 'key 파일 경로';

    IdSSLIOHandlerSocketOpenSSL.SSLOptions.SSLVersions := [sslvTLSv1_2];

 

    {

      취약한 암호화 제외한 암호화 리스트, 포함시키는 것을 권장.

      IdSSLIOHandlerSocketOpenSSL.SSLOptions.CipherList := '';

      SRP-DSS-AES-256-CBC-SHA

      SRP-RSA-AES-256-CBC-SHA

      SRP-AES-256-CBC-SHA

      DH-DSS-AES256-GCM-SHA384

      DHE-DSS-AES256-GCM-SHA384

      DH-RSA-AES256-GCM-SHA384

      DHE-RSA-AES256-GCM-SHA384

      DHE-RSA-AES256-SHA256

      DHE-DSS-AES256-SHA256

      DH-RSA-AES256-SHA256

      DH-DSS-AES256-SHA256

      DHE-RSA-AES256-SHA

      DHE-DSS-AES256-SHA

      DH-RSA-AES256-SHA

      DH-DSS-AES256-SHA

      DHE-RSA-CAMELLIA256-SHA

      DHE-DSS-CAMELLIA256-SHA

      DH-RSA-CAMELLIA256-SHA

      DH-DSS-CAMELLIA256-SHA

      ECDH-RSA-AES256-GCM-SHA384

      ECDH-ECDSA-AES256-GCM-SHA384

      ECDH-RSA-AES256-SHA384

      ECDH-ECDSA-AES256-SHA384

      ECDH-RSA-AES256-SHA

      ECDH-ECDSA-AES256-SHA

      AES256-GCM-SHA384

      AES256-SHA256

      AES256-SHA

      CAMELLIA256-SHA

      PSK-AES256-CBC-SHA

      SRP-DSS-AES-128-CBC-SHA

      SRP-RSA-AES-128-CBC-SHA

      SRP-AES-128-CBC-SHA

      DH-DSS-AES128-GCM-SHA256

      DHE-DSS-AES128-GCM-SHA256

      DH-RSA-AES128-GCM-SHA256

      DHE-RSA-AES128-GCM-SHA256

      DHE-RSA-AES128-SHA256

      DHE-DSS-AES128-SHA256

      DH-RSA-AES128-SHA256

      DH-DSS-AES128-SHA256

      DHE-RSA-AES128-SHA

      DHE-DSS-AES128-SHA

      DH-RSA-AES128-SHA

      DH-DSS-AES128-SHA

      DHE-RSA-CAMELLIA128-SHA

      DHE-DSS-CAMELLIA128-SHA

      DH-RSA-CAMELLIA128-SHA

      DH-DSS-CAMELLIA128-SHA

      ECDH-RSA-AES128-GCM-SHA256

      ECDH-ECDSA-AES128-GCM-SHA256

      ECDH-RSA-AES128-SHA256

      ECDH-ECDSA-AES128-SHA256

      ECDH-RSA-AES128-SHA

      ECDH-ECDSA-AES128-SHA

      AES128-GCM-SHA256

      AES128-SHA256

      AES128-SHA

      CAMELLIA128-SHA

      IDEA-CBC-SHA

      PSK-AES128-CBC-SHA

      SRP-DSS-3DES-EDE-CBC-SHA

      SRP-RSA-3DES-EDE-CBC-SHA

      SRP-3DES-EDE-CBC-SHA

      EDH-RSA-DES-CBC3-SHA

      EDH-DSS-DES-CBC3-SHA

      DH-RSA-DES-CBC3-SHA

      DH-DSS-DES-CBC3-SHA

      ECDH-RSA-DES-CBC3-SHA

      ECDH-ECDSA-DES-CBC3-SHA

      PSK-3DES-EDE-CBC-SHA

      EDH-RSA-DES-CBC-SHA

      EDH-DSS-DES-CBC-SHA

      DH-RSA-DES-CBC-SHA

      DH-DSS-DES-CBC-SHA

      DES-CBC-SHA

      ECDHE-RSA-AES256-GCM-SHA384

      ECDHE-ECDSA-AES256-GCM-SHA384

      ECDHE-RSA-AES256-SHA384

      ECDHE-ECDSA-AES256-SHA384

      ECDHE-RSA-AES256-SHA

      ECDHE-ECDSA-AES256-SHA

      ECDHE-RSA-AES128-GCM-SHA256

      ECDHE-ECDSA-AES128-GCM-SHA256

      ECDHE-RSA-AES128-SHA256

      ECDHE-ECDSA-AES128-SHA256

      ECDHE-RSA-AES128-SHA

      ECDHE-ECDSA-AES128-SHA

      ECDHE-RSA-DES-CBC3-SHA

      ECDHE-ECDSA-DES-CBC3-SHA

    }

 

    IdHTTP.Get();

    IdHTTP.Put();

  finally

    IdSSLIOHandlerSocketOpenSSL.DisposeOf;

    IdHTTP.DisposeOf;    

  end;

end;