SSL / TLS 백엔드

sgcWebSockets는 단일 속성 TLSOptions.IOHandler 뒤에 다섯 가지 상호 교환 가능한 TLS 전송을 제공합니다. 최대 이식성을 원한다면 OpenSSL을, 운영 체제 자체의 TLS 스택을 사용하면서 배포할 OpenSSL 라이브러리를 없애고 싶다면 네이티브 플랫폼 백엔드(Windows SChannel, Android, iOS/macOS)를, 어떤 타깃에서도 의존성이 없고 기본으로 포스트 퀀텀 X25519MLKEM768 키 교환을 협상하는 Object Pascal TLS 1.3 및 TLS 1.2 스택을 원한다면 Native TLS 엔진을 선택하세요. Windows에서는 OpenSSL 자체도 실행 파일에 정적으로 링크할 수 있어, OpenSSL을 계속 사용하면서도 배포할 것이 전혀 없습니다. 백엔드 전환은 코드 한 줄이면 끝이고, 그 외에는 아무것도 바뀌지 않습니다.

다섯 가지 TLS 전송, 하나의 속성

모든 백엔드는 동일한 TLSOptions API에 연결됩니다. 플랫폼과 배포 환경에 맞는 것을 고른 다음 TLSOptions.IOHandler를 설정하세요.

백엔드 비교

각 전송의 플랫폼, 배포 풋프린트, TLS 1.3 지원 및 에디션.

백엔드 플랫폼 배포할 라이브러리 TLS 1.3 에디션
OpenSSL Windows, Linux, macOS, iOS, Android libssl/libcrypto, 또는 Windows에서는 없음(정적 링크) 예 모든 에디션
SChannel Windows 없음 (Windows에 내장) 예 (Windows 11/Server 2022+) Professional, Enterprise
Android TLS Android 없음 (OS 사용) 예 Enterprise
Apple TLS iOS, macOS 없음 (OS 사용) 예 (10.14+/iOS 12+) Enterprise
Native TLS Windows, Linux, macOS, iOS, Android 없음 (순수 Object Pascal) 예 (TLS 1.2도) Standard, Professional, Enterprise 또는 sgcCrypto 패키지

백엔드 선택

각 전송에는 전체 설정, Delphi 및 C++ Builder용 코드, 배포 참고 사항 및 에디션 세부 정보를 담은 전용 페이지가 있습니다.

OpenSSL (iohOpenSSL)

Indy 소켓 위에서 동작하는 크로스 플랫폼 TLS로, sgcWebSockets가 대상으로 하는 모든 플랫폼에서 사용할 수 있으며 대부분에서 기본값입니다. 완전한 TLS 1.0부터 1.3까지, 가장 넓은 암호 커버리지, 사용자 지정 CA, 클라이언트 인증서 및 ALPN을 제공합니다. OpenSSL 런타임 라이브러리를 앱과 함께 배포합니다. 모든 에디션에 포함됩니다. Windows에서는 대신 실행 파일에 정적으로 링크할 수도 있어 배포할 것이 없습니다.

전체 가이드 읽기 →

SChannel (iohSChannel)

Windows에 내장된 Microsoft의 네이티브 TLS 스택(Secure Channel / SSPI). 라이브러리 배포가 전혀 없으며, 출하하거나 패치할 OpenSSL DLL이 없고, Windows 인증서 저장소를 사용합니다. Windows 전용. Professional 및 Enterprise 에디션에 포함됩니다.

전체 가이드 읽기 →

네이티브 Android TLS (iohAndroidTLS)

JNI를 통해 플랫폼의 SSLEngine을 사용하는 Android 네이티브 TLS. APK에 OpenSSL .so가 없으며, Android 시스템 신뢰 저장소에 대한 검증, TLS 1.3, 그리고 Android 10(API 29) 이상에서의 ALPN을 제공합니다. Enterprise 에디션.

전체 가이드 읽기 →

네이티브 Apple TLS (iohAppleTLS)

iOS 및 macOS용 Apple 네이티브 TLS로, 배포할 OpenSSL .dylib이 없습니다. macOS 10.14+ / iOS 12+에서는 Network.framework(TLS 1.3)를 자동 선택하고, 더 오래된 시스템에서는 Secure Transport(TLS 1.2)로 폴백하며, 시스템 신뢰, SNI, 사용자 지정 CA, 클라이언트 인증서 / mTLS 및 ALPN을 지원합니다. Enterprise 에디션.

전체 가이드 읽기 →

Native TLS (iohNativeTLS)

sgcCrypto 유닛 위에 전부 Object Pascal로 작성된 TLS 1.3 및 TLS 1.2 구현이므로, Windows, Linux, macOS, iOS, Android 어디에서도 배포할 것이 전혀 없습니다. 클라이언트에서는 TLSOptions.IOHandler := iohNativeTLS를, 서버에서는 SSLOptions.IOHandler := iohNativeTLS를 설정하며, IOCP와 EPOLL 서버 엔진도 포함됩니다. TLSOptions.NativeTLS_Options.Groups와 TLSOptions.NativeTLS_Options.CipherSuites는 OpenSSL 스타일의 콜론 구분 목록을 받습니다. 기본값은 각각 X25519MLKEM768:X25519:secp256r1:secp384r1과 TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256에 TLS 1.2 기본값을 더한 것이므로, 이를 지원하는 상대와의 핸드셰이크는 별도 설정 없이 포스트 퀀텀 하이브리드가 됩니다.

TLS 1.3 및 TLS 1.2. 클라이언트에서는 TLSOptions.Version, 서버에서는 SSLOptions.Version이 허용되는 최저 버전을 지정합니다. tls1_2 또는 tlsUndefined는 TLS 1.3과 TLS 1.2를 모두 협상하고, tls1_3은 TLS 1.3만 허용합니다. TLS 1.2만 사용하려면 NativeTLS_Options.CipherSuites에 TLS 1.2 스위트만 나열하세요. TLS 1.2는 기본으로 ECDHE_ECDSA와 ECDHE_RSA를 AES-128-GCM, AES-256-GCM, ChaCha20-Poly1305와 함께 제공하며, ECDHE AES-CBC 스위트와 RSA 키 교환은 직접 지정했을 때만 사용됩니다. 하이브리드 포스트 퀀텀 그룹은 TLS 1.3에만 존재하므로, TLS 1.2에서는 X25519, secp256r1 또는 secp384r1을 사용합니다. TLS 1.2에는 RFC 7627의 확장 마스터 시크릿과 양쪽 모두에 적용되는 RFC 8446의 다운그레이드 방지가 포함되며, 재협상과 SHA-1 서명은 거부합니다.

지원하지 않는 것. 이 엔진은 TLS 1.3과 TLS 1.2만 지원하며, TLS 1.1, TLS 1.0, SSL은 지원하지 않습니다. 세션 재개와 PSK가 없고, 0-RTT와 QUIC도 없습니다. 신뢰 루트는 TLSOptions.RootCertFile에서 가져오며, NativeTLS_Options.UseSystemRoots가 True이면 운영 체제가 신뢰하는 루트도 추가됩니다. 이는 Windows ROOT 저장소나 CA 번들 파일에서 읽어오며, macOS나 iOS 키체인 또는 Android 저장소에서는 절대 읽지 않습니다. 컴포넌트 이벤트 OnSSLVerifyPeer는 이 엔진에서 사용할 수 없습니다. 엔진이 자체 검증 훅을 가지고 있기 때문입니다. 이 가운데 어느 하나라도 필요하다면 OpenSSL이나 플랫폼 백엔드를 계속 사용하세요.

sgcCrypto의 일부이므로 Standard 에디션 이상과 단독 sgcCrypto 패키지에 함께 제공됩니다.

에디션 참고

네이티브 플랫폼 TLS인 Android(iohAndroidTLS)와 Apple(iohAppleTLS)은 Enterprise 에디션이 필요합니다. OpenSSL(iohOpenSSL)은 모든 에디션에 포함되고, SChannel(iohSChannel)은 Professional 및 Enterprise 에디션에 포함됩니다. Windows에서 OpenSSL을 정적으로 링크하려면 마찬가지로 Enterprise 또는 All-Access 에디션이 필요합니다. Native TLS(iohNativeTLS)은 sgcCrypto의 일부이므로 Standard 에디션 이상과 단독 sgcCrypto 패키지에 함께 제공됩니다.

한 줄로 전환

다섯 가지 백엔드 모두 동일한 TLSOptions API를 공유하므로, 서로 간 이동은 속성 하나만 바꾸면 됩니다. 코드의 나머지 부분은 바뀔 필요가 없습니다.

TLS & VerifyCertificate

모든 백엔드에서 동일한 방식으로 TLS를 활성화하고 피어 인증서 검증을 켜고 끕니다.

RootCertFile

비공개 또는 자체 서명 인증 기관을 신뢰하려면 사용자 지정 CA 루트를 가리키게 하세요.

CertFile & Password

상호 TLS(mTLS) 인증을 위해 클라이언트 인증서와 그 비밀번호를 제공합니다.

ALPNProtocols

TLS 핸드셰이크 중에 애플리케이션 프로토콜(예: http/1.1)을 광고합니다.

// Same TLSOptions, only the IOHandler line changes per platform.
WSClient.TLS := True;
WSClient.TLSOptions.IOHandler := iohOpenSSL;   // or iohSChannel / iohAndroidTLS / iohAppleTLS / iohNativeTLS
WSClient.TLSOptions.VerifyCertificate := True;
WSClient.TLSOptions.RootCertFile := '';
WSClient.TLSOptions.CertFile := '';
WSClient.TLSOptions.Password := '';
WSClient.TLSOptions.ALPNProtocols.Add('http/1.1');
WSClient.Active := True;
// Same TLSOptions, only the IOHandler line changes per platform.
WSClient->TLS = true;
WSClient->TLSOptions->IOHandler = iohOpenSSL;   // or iohSChannel / iohAndroidTLS / iohAppleTLS / iohNativeTLS
WSClient->TLSOptions->VerifyCertificate = true;
WSClient->TLSOptions->RootCertFile = "";
WSClient->TLSOptions->CertFile = "";
WSClient->TLSOptions->Password = "";
WSClient->TLSOptions->ALPNProtocols->Add("http/1.1");
WSClient->Active = true;
최고의 가성비: All-Access모든 eSeGeCe 제품과 프리미엄 지원이 포함되어 연 €1,059부터 이용할 수 있어요.
All-Access 가격 보기

네이티브 TLS, 배포할 OpenSSL 제로

무료 체험판을 다운로드해 코드 한 줄로 TLS 백엔드를 전환하세요.