Backendy SSL / TLS

sgcWebSockets dostarcza pięć wymiennych transportów TLS za jedną właściwością, TLSOptions.IOHandler. Wybierz OpenSSL dla maksymalnej przenośności, natywny backend platformowy (Windows SChannel, Android, iOS/macOS), który korzysta z własnego stosu TLS systemu operacyjnego, bez bibliotek OpenSSL do wdrożenia, albo Natywny TLS, czyli stos TLS 1.3 i TLS 1.2 napisany w Object Pascal, który nie niesie ze sobą żadnej zależności na żadnej platformie i domyślnie negocjuje post-kwantową wymianę kluczy X25519MLKEM768. Na Windows sam OpenSSL można również linkować statycznie do pliku wykonywalnego, dzięki czemu pozostajesz przy OpenSSL, a i tak nie musisz nic wdrażać. Przełączenie backendu to jedna linia kodu, nic więcej się nie zmienia.

Pięć transportów TLS, jedna właściwość

Każdy backend podpina się do tego samego API TLSOptions. Wybierz ten, który pasuje do Twojej platformy i wdrożenia, a następnie ustaw TLSOptions.IOHandler.

Porównanie backendów

Platformy, rozmiar wdrożenia, obsługa TLS 1.3 i edycja dla każdego transportu.

Backend Platformy Biblioteka do wdrożenia TLS 1.3 Edycja
OpenSSL Windows, Linux, macOS, iOS, Android libssl/libcrypto, lub żadnej na Windows (łączenie statyczne) Tak Wszystkie edycje
SChannel Windows Brak (wbudowany w Windows) Tak (Windows 11/Server 2022+) Professional, Enterprise
Natywny TLS systemu Android Android Brak (korzysta z systemu) Tak Enterprise
Natywny TLS systemu Apple iOS, macOS Brak (korzysta z systemu) Tak (10.14+/iOS 12+) Enterprise
Natywny TLS Windows, Linux, macOS, iOS, Android Brak (czysty Object Pascal) Tak (oraz TLS 1.2) Standard, Professional, Enterprise albo pakiet sgcCrypto

Wybierz backend

Każdy transport ma własną stronę z pełną konfiguracją, kodem dla Delphi i C++ Builder, uwagami dotyczącymi wdrożenia oraz szczegółami edycji.

OpenSSL (iohOpenSSL)

Wieloplatformowy TLS oparty na gnieździe Indy, dostępny na każdej platformie obsługiwanej przez sgcWebSockets i domyślny na większości z nich. Pełny zakres od TLS 1.0 do 1.3, najszersze pokrycie szyfrów, niestandardowy urząd CA, certyfikaty klienta i ALPN. Z aplikacją wdrażasz biblioteki uruchomieniowe OpenSSL. Dostępny w każdej edycji. Na Windows można go również linkować statycznie do pliku wykonywalnego, bez niczego do wdrożenia.

Przeczytaj pełny przewodnik →

SChannel (iohSChannel)

Natywny stos TLS firmy Microsoft (Secure Channel / SSPI), wbudowany w Windows. Zero wdrażania bibliotek, brak bibliotek DLL OpenSSL do dostarczenia lub łatania, korzysta z magazynu certyfikatów systemu Windows. Tylko Windows. Dostępny w edycjach Professional i Enterprise.

Przeczytaj pełny przewodnik →

Natywny TLS systemu Android (iohAndroidTLS)

Natywny TLS systemu Android wykorzystujący platformowy SSLEngine za pośrednictwem JNI. Brak pliku OpenSSL .so w pakiecie APK, walidacja względem systemowego magazynu zaufania Android, TLS 1.3 oraz ALPN na Androidzie 10 (API 29) i nowszych. Edycja Enterprise.

Przeczytaj pełny przewodnik →

Natywny TLS systemu Apple (iohAppleTLS)

Natywny TLS systemu Apple dla iOS i macOS, bez pliku OpenSSL .dylib do wdrożenia. Automatycznie wybiera Network.framework (TLS 1.3) na macOS 10.14+ / iOS 12+ i wraca do Secure Transport (TLS 1.2) na starszych systemach, z zaufaniem systemowym, SNI, niestandardowym urzędem CA, certyfikatem klienta / mTLS oraz ALPN. Edycja Enterprise.

Przeczytaj pełny przewodnik →

Natywny TLS (iohNativeTLS)

Implementacja TLS 1.3 i TLS 1.2 napisana w całości w Object Pascal na bazie jednostek sgcCrypto, więc nie wymaga wdrażania niczego, ani na Windows, ani na Linux, macOS, iOS czy Android. Ustaw TLSOptions.IOHandler := iohNativeTLS na kliencie albo SSLOptions.IOHandler := iohNativeTLS na serwerze, wraz z silnikami serwera IOCP i EPOLL. TLSOptions.NativeTLS_Options.Groups oraz TLSOptions.NativeTLS_Options.CipherSuites przyjmują listy rozdzielone dwukropkami, w stylu OpenSSL. Domyślnie są to X25519MLKEM768:X25519:secp256r1:secp384r1 oraz TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256 wraz z domyślnymi ustawieniami TLS 1.2, więc uzgadnianie z drugim końcem, który je obsługuje, jest hybrydowo post-kwantowe bez żadnej konfiguracji.

TLS 1.3 i TLS 1.2. TLSOptions.Version na kliencie oraz SSLOptions.Version na serwerze to najniższa dopuszczalna wersja: tls1_2 lub tlsUndefined negocjuje TLS 1.3 albo TLS 1.2, a tls1_3 dopuszcza wyłącznie TLS 1.3. Aby wymusić wyłącznie TLS 1.2, wpisz w NativeTLS_Options.CipherSuites tylko zestawy szyfrów dla TLS 1.2. TLS 1.2 domyślnie oferuje ECDHE_ECDSA i ECDHE_RSA z AES-128-GCM, AES-256-GCM oraz ChaCha20-Poly1305, natomiast zestawy ECDHE AES-CBC oraz wymiana kluczy RSA są dostępne tylko wtedy, gdy zostaną wskazane z nazwy. Korzysta z X25519, secp256r1 lub secp384r1, ponieważ hybrydowe grupy post-kwantowe istnieją wyłącznie w TLS 1.3. TLS 1.2 obejmuje rozszerzony sekret główny z RFC 7627 oraz ochronę przed obniżeniem wersji z RFC 8446 po obu stronach, a także odrzuca renegocjację i podpisy SHA-1.

Czego nie robi. Silnik obsługuje wyłącznie TLS 1.3 i TLS 1.2, bez TLS 1.1, TLS 1.0 ani SSL. Nie ma wznawiania sesji ani PSK, nie ma 0-RTT ani QUIC. Zaufane korzenie pochodzą z TLSOptions.RootCertFile, a dodatkowo z korzeni zaufanych przez system operacyjny, gdy NativeTLS_Options.UseSystemRoots ma wartość True, odczytywanych z magazynu ROOT systemu Windows lub z pliku pakietu CA, a nigdy z pęku kluczy macOS czy iOS ani z magazynu Android, a zdarzenie komponentu OnSSLVerifyPeer nie jest dla niego dostępne, silnik ma własne punkty zaczepienia weryfikacji. Jeśli potrzebujesz którejkolwiek z tych rzeczy, pozostań przy OpenSSL lub backendzie platformowym.

Jest częścią pakietu sgcCrypto, więc dostarczany jest od edycji Standard wzwyż oraz w samodzielnym pakiecie sgcCrypto.

Uwaga o edycji

Natywny platformowy TLS, Android (iohAndroidTLS) i Apple (iohAppleTLS), wymaga edycji Enterprise. OpenSSL (iohOpenSSL) jest dostępny w każdej edycji; SChannel (iohSChannel) jest dostępny w edycjach Professional i Enterprise. Statyczne łączenie OpenSSL na Windows wymaga również edycji Enterprise lub All-Access. Natywny TLS (iohNativeTLS) jest częścią sgcCrypto, więc dostarczany jest od edycji Standard wzwyż oraz w samodzielnym pakiecie sgcCrypto.

Przełącz jedną linią

Każdy z pięciu backendów korzysta z tego samego API TLSOptions, więc przejście między nimi to zmiana jednej właściwości. Nic więcej w Twoim kodzie nie musi się zmieniać.

TLS i VerifyCertificate

Włącz TLS i przełączaj weryfikację certyfikatu serwera tak samo na każdym backendzie.

RootCertFile

Wskaż niestandardowy urząd CA, aby zaufać prywatnemu lub samopodpisanemu urzędowi certyfikacji.

CertFile i Password

Dostarcz certyfikat klienta i jego hasło dla uwierzytelniania wzajemnego TLS (mTLS).

ALPNProtocols

Ogłaszaj protokoły aplikacyjne (na przykład http/1.1) podczas uzgadniania TLS.

// Te same TLSOptions, zmienia się tylko linia IOHandler dla każdej platformy.
WSClient.TLS := True;
WSClient.TLSOptions.IOHandler := iohOpenSSL;   // lub 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;
// Te same TLSOptions, zmienia się tylko linia IOHandler dla każdej platformy.
WSClient->TLS = true;
WSClient->TLSOptions->IOHandler = iohOpenSSL;   // lub 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;
Najkorzystniejsza oferta: All-AccessWszystkie produkty eSeGeCe, ze wsparciem Premium w cenie, już od €1,059 rocznie.
Zobacz cennik All-Access

Natywny TLS, zero OpenSSL do wdrożenia

Pobierz bezpłatną wersję próbną i przełączaj backendy TLS jedną linią kodu.