Backend TLS OpenSSL — sgcWebSockets | eSeGeCe

Backend TLS OpenSSL

OpenSSL (iohOpenSSL) to wieloplatformowy transport TLS dla sgcWebSockets. Działa na każdej platformie obsługiwanej przez bibliotekę i jest domyślny na większości z nich, z najszerszym pokryciem protokołów i szyfrów spośród wszystkich backendów. Włącz go, ustawiając TLSOptions.IOHandler na iohOpenSSL, a następnie wdróż biblioteki uruchomieniowe OpenSSL wraz z aplikacją.

← Wszystkie backendy TLS

OpenSSL (iohOpenSSL)

Wieloplatformowy TLS zaimplementowany na gnieździe Indy, dostępny na każdej platformie obsługiwanej przez sgcWebSockets.

OpenSSL to wieloplatformowa implementacja TLS, którą sgcWebSockets nakłada na gniazdo Indy. Jest dostępna na Windows, Linux, macOS, iOS i Android i na większości z nich jest domyślnym backendem. Wybierz OpenSSL, gdy potrzebujesz identycznego zachowania TLS na każdej platformie lub gdy zależysz od funkcji udostępnianej wyłącznie przez OpenSSL.

Backend obejmuje TLS od 1.0 do 1.3 z najszerszym wyborem zestawów szyfrów spośród wszystkich transportów sgcWebSockets. Możesz zaufać prywatnemu lub samopodpisanemu urzędowi za pomocą niestandardowego urzędu CA (RootCertFile), przedstawić certyfikat klienta dla wzajemnego TLS oraz ogłaszać protokoły aplikacyjne, takie jak http/1.1, za pośrednictwem ALPN. Ponieważ wszystkie cztery backendy korzystają z tego samego API TLSOptions, kod napisany pod OpenSSL przechodzi na backend natywny przez zmianę wyłącznie linii IOHandler.

Kompromisem jest wdrożenie. OpenSSL to zależność zewnętrzna, więc dostarczasz jego biblioteki uruchomieniowe wraz z aplikacją i utrzymujesz je załatane. Na Windows oznacza to libssl-3.dll i libcrypto-3.dll, na Linux i Android odpowiednie pliki .so, a na platformach Apple pliki .dylib. Jeśli chcesz natywny TLS bez bibliotek do wdrożenia, przyjrzyj się SChannel na Windows lub natywnym backendom Android i Apple, lub pozostań przy OpenSSL i linkuj go statycznie do swojego pliku wykonywalnego na Windows, zobacz poniżej.

Włącz OpenSSL

Ustaw TLSOptions.IOHandler na iohOpenSSL, a następnie wdróż biblioteki OpenSSL ze swoją kompilacją.

uses
  sgcWebSocket, sgcWebSocket_Types;
// ...
WSClient.TLS := True;
WSClient.TLSOptions.IOHandler := iohOpenSSL;
WSClient.TLSOptions.VerifyCertificate := True;
WSClient.TLSOptions.RootCertFile := '';   // opcjonalny niestandardowy CA (PEM/DER)
WSClient.TLSOptions.CertFile := '';       // opcjonalny certyfikat klienta dla mTLS
WSClient.TLSOptions.Password := '';
WSClient.TLSOptions.ALPNProtocols.Add('http/1.1');
WSClient.Host := 'your.server.com';
WSClient.Port := 443;
WSClient.Active := True;
WSClient->TLS = true;
WSClient->TLSOptions->IOHandler = iohOpenSSL;
WSClient->TLSOptions->VerifyCertificate = true;
WSClient->TLSOptions->RootCertFile = "";   // opcjonalny niestandardowy CA (PEM/DER)
WSClient->TLSOptions->CertFile = "";       // opcjonalny certyfikat klienta dla mTLS
WSClient->TLSOptions->Password = "";
WSClient->TLSOptions->ALPNProtocols->Add("http/1.1");
WSClient->Host = "your.server.com";
WSClient->Port = 443;
WSClient->Active = true;

Dostarczanie bibliotek OpenSSL

OpenSSL to zależność zewnętrzna, więc biblioteki uruchomieniowe wędrują z aplikacją na każdej platformie.

Windows

Wdróż libssl-3.dll i libcrypto-3.dll obok pliku wykonywalnego (kompilacja 32-bitowa lub 64-bitowa, zgodna z Twoim celem), lub całkowicie pomiń biblioteki DLL, linkując OpenSSL statycznie, zobacz poniżej.

Linux i Android

Dołącz odpowiednie pliki .so libssl i libcrypto, a następnie wczytaj je ze ścieżki dostępnej dla aplikacji w czasie wykonywania.

macOS, iOS

Dostarcz pliki .dylib libssl i libcrypto z pakietem aplikacji, aby środowisko uruchomieniowe OpenSSL było dostępne na urządzeniu.

Utrzymuj je załatane

Ponieważ to Ty wdrażasz biblioteki, jesteś odpowiedzialny za ich aktualizację po wydaniu poprawki bezpieczeństwa.

Połącz OpenSSL wewnątrz pliku wykonywalnego

Na Windows OpenSSL można połączyć bezpośrednio wewnątrz pliku .exe, zamiast wczytywać go w czasie działania z bibliotek libssl-3.dll i libcrypto-3.dll.

Dodaj jednostkę sgcIdSSLOpenSSL_Static do klauzuli uses w swoim projekcie, a nie musisz konfigurować niczego więcej: nie ma dyrektywy kompilatora do włączenia ani wersji API OpenSSL do wyboru. Twoja aplikacja zaczyna korzystać z biblioteki OpenSSL połączonej wewnątrz pliku wykonywalnego już przy następnym uruchomieniu, zarówno dla komponentów klienckich, jak i serwerowych, w kompilacjach 32- i 64-bitowych. Usuń jednostkę z klauzuli uses, a aplikacja wróci do wczytywania bibliotek DLL OpenSSL dokładnie tak jak wcześniej.

uses
  sgcWebSocket, sgcWebSocket_Classes,
  sgcIdSSLOpenSSL_Static;

Obecnie połączona wersja OpenSSL to 3.5.7, odświeżana w kolejnych aktualizacjach, dzięki czemu nie musisz samodzielnie śledzić ani ponownie wdrażać plików binarnych OpenSSL. Statyczne łączenie wymaga Delphi XE2 lub nowszego oraz niestandardowej biblioteki Indy (domyślnej w tych edycjach); w starszych wersjach Delphi jednostka kompiluje się do niczego, a aplikacja nadal wczytuje biblioteki DLL OpenSSL jak zwykle.

Uwaga o edycji

OpenSSL (iohOpenSSL) jest dostępny w każdej edycji sgcWebSockets. Zobacz macierz funkcji, aby poznać pełne zestawienie.

Statyczne łączenie na Windows wymaga Delphi XE2 lub nowszego i jest dostępne w edycjach Enterprise i All-Access.

Najkorzystniejsza oferta: All-AccessWszystkie produkty eSeGeCe, ze wsparciem Premium w cenie, już od €1,059 rocznie.
Zobacz cennik All-Access

Wieloplatformowy TLS w jednej linii

Pobierz bezpłatną wersję próbną i dodaj TLS oparty na OpenSSL do swoich aplikacji Delphi i C++ Builder.