TsgcWebSocketClientProperties › TLSOptions

TLSOptions 속성

TLS가 활성화될 때 사용되는 인증서, TLS 버전, ALPN, IOHandler 및 기타 보안 연결 세부 정보를 구성합니다.

구문

property TLSOptions: TsgcWSTLS_Options read FTLSOptions write SetTLSOptions;

기본값

Preset=tlspCustom

설명

TLSTrue일 때만 접근할 수 있습니다. 하위 속성에는 RootCertFile, CertFile, KeyFile, Password, VerifyCertificate, VerifyDepth, Version(tlsUndefined부터 tls1_3까지), ALPNProtocolsIOHandler(iohOpenSSL, iohSChannel, iohAndroidTLS 또는 iohAppleTLS)가 포함됩니다. Android에서 iohAndroidTLS는 플랫폼 네이티브 TLS(javax.net.ssl.SSLEngine)를 사용하고, iOS 및 macOS에서 iohAppleTLS는 Apple 네이티브 TLS를 사용하므로 OpenSSL 라이브러리를 배포할 필요가 없습니다. 네이티브 플랫폼 TLS에는 Enterprise 에디션이 필요합니다. OpenSSL 관련 설정은 OpenSSL_Options 아래에, SChannel 관련 설정은 SChannel_Options 아래에 있습니다.

VerifyCertificateiohSChannel을 포함한 모든 IOHandler에 대해 동일한 방식으로 인증서 검증을 제어합니다. 기본값은 False이므로, 자체 서명되었거나 만료되었거나 호스트 이름이 일치하지 않는 인증서를 제시하는 서버도 이 값을 True로 설정하기 전까지는 아무 경고 없이 수락됩니다. SChannel을 사용하는 경우 검증은 Windows 인증서 저장소를 기준으로 수행되며, OnSChannelVerifyPeer를 사용하면 애플리케이션이 체인을 검사하거나 그렇지 않으면 거부될 인증서를 수락할 수 있습니다.

VerifyCertificate는 인증서가 발급된 이후에 해지되었는지 여부에 대해서는 아무것도 알려주지 않으므로, 인증서가 해지되었지만 아직 만료되지 않은 도난당한 키도 여전히 인증에 성공합니다. iohSChannel을 사용하는 경우, 해지 상태는 SChannel_Options.Revocation.Check가 기본값인 scrcDisabled 이외의 값으로 설정된 경우에만 확인됩니다. scrcEndCertificate는 서버 인증서만 확인하고, scrcChainExcludeRoot는 중간 인증서까지 함께 확인하며, scrcChain은 루트도 포함합니다. Revocation.Timeout은 CRL 및 OCSP 조회 전체에 대한 제한 시간을 정하여(기본값 5000ms) 도달할 수 없는 응답자가 핸드셰이크를 지연시키지 못하도록 하고, Revocation.CacheOnly는 Windows가 이미 캐시해 둔 데이터만 사용하며 네트워크에 접속하지 않습니다. 그리고 Revocation.IgnoreRevocationOfflineRevocation.IgnoreNoRevocationCheck(둘 다 True)는 도달할 수 없는 응답자나 해지 정보를 게시하지 않는 인증서를 수락할지 여부를 결정합니다. 해지가 확인된 인증서는 항상 거부됩니다. SChannel Certificate Revocation을 참조하십시오.

Preset은 한 번의 할당으로 일련의 보안 기본값을 적용합니다. tlspCustom(기본값)이면 모든 옵션이 수동으로 구성한 값을 유지하여 이전 동작이 보존됩니다. Preset := tlspSecureDefaults를 설정하면 인증서 검증(VerifyCertificate := True)이 활성화되고, (더 낮거나 정의되지 않은 버전이 구성된 경우) Version이 최소 TLS 1.2로 올라가며, 서버 인증서의 호스트 이름 확인(OpenSSL X509Checks 호스트 이름 검증)이 활성화되고, SChannel 해지 확인이 scrcChainExcludeRoot로 활성화됩니다. 프리셋을 적용한 후에도 개별 옵션을 계속 조정할 수 있습니다.

예제


oClient := TsgcWebSocketClient.Create(nil);
oClient.URL := 'wss://www.esegece.com:2053';
oClient.TLSOptions.Version := tls1_2;
oClient.TLSOptions.VerifyCertificate := true;
oClient.TLSOptions.RootCertFile := 'cacert.pem';
oClient.Active := true;

속성으로 돌아가기