Statyczne łączenie OpenSSL w sgcWebSockets: koniec z bibliotekami DLL libcrypto i libssl | eSeGeCe Blog

Statyczne łączenie OpenSSL w sgcWebSockets: koniec z bibliotekami DLL libcrypto i libssl

· Komponenty

Wdrażanie TLS w sgcWebSockets na Windows zawsze wymagało dostarczenia bibliotek libcrypto i libssl obok pliku wykonywalnego, dopasowanych do właściwej wersji i architektury OpenSSL. Teraz sgcWebSockets może zamiast tego połączyć OpenSSL bezpośrednio wewnątrz pliku wykonywalnego, dzięki czemu nie ma żadnej biblioteki DLL do wdrożenia, żadnej wersji do dopasowania i żadnego folderu, w którym trzeba je trzymać. Funkcja jest dostępna w edycjach Enterprise i All-Access.

Jedna jednostka, nic więcej do konfiguracji

Nie ma żadnych dyrektyw kompilatora do włączenia ani wersji API OpenSSL do wyboru. Wystarczy dodać jednostkę sgcIdSSLOpenSSL_Static do klauzuli uses w projekcie, a od następnego uruchomienia aplikacja będzie korzystać z biblioteki OpenSSL połączonej wewnątrz pliku .exe, zarówno dla komponentów klienckich, jak i serwerowych.

uses
  sgcWebSocket, sgcWebSocket_Classes,
  sgcIdSSLOpenSSL_Static;

Usunięcie jednostki z klauzuli uses sprawia, że aplikacja wraca do wczytywania bibliotek DLL OpenSSL dokładnie tak jak wcześniej. Nie trzeba zmieniać niczego więcej w kodzie, ustawienia TLS, certyfikaty i logika połączeń pozostają takie same w obu przypadkach.

Działa w klientach i serwerach, Win32 i Win64

Statyczne łączenie dotyczy w równym stopniu TsgcWebSocketClient, jak i TsgcWebSocketServer, a także każdego innego komponentu sgcWebSockets lub sgcIndy korzystającego z TLS, zarówno w wersjach 32-bitowych, jak i 64-bitowych. Serwer obsługujący TLS dla setek połączeń i klient łączący się z pojedynczym punktem końcowym korzystają z połączonego OpenSSL w ten sam sposób, wystarczy mieć tę jednostkę w projekcie.

OpenSSL 3.5.7, stale aktualizowany

Obecnie połączona wersja OpenSSL to 3.5.7. Wraz z pojawianiem się nowych wydań OpenSSL, wersja ta jest odświeżana w kolejnych aktualizacjach sgcWebSockets, dzięki czemu nie musisz samodzielnie śledzić, pobierać ani ponownie wdrażać plików binarnych OpenSSL, wystarczy zwykła aktualizacja komponentu.

Wymagania

Jeśli skompilujesz projekt w wersji Delphi starszej niż XE2, a mimo to odwołujesz się do jednostki oczekując, że zostanie połączona, zobaczysz błąd E2045 Bad object file format. Rozwiązaniem jest po prostu usunięcie sgcIdSSLOpenSSL_Static z klauzuli uses, aplikacja będzie nadal działać z bibliotekami DLL OpenSSL.

Kiedy to pomaga

Statyczne łączenie jest przydatne, gdy chcesz dostarczyć pojedynczy plik, gdy nie możesz zagwarantować, że docelowa maszyna ma już zainstalowaną właściwą bibliotekę DLL OpenSSL, lub gdy Twój proces wdrożenia nie dopuszcza dodatkowych plików obok pliku wykonywalnego, na przykład zablokowany katalog instalacyjny lub narzędzie dystrybuowane jako jeden plik binarny.

Dostępność

Statyczne łączenie OpenSSL jest dostępne w edycjach Enterprise i All-Access sgcWebSockets. Aby zapoznać się z pełnym zestawieniem backendów TLS obsługiwanych przez sgcWebSockets na każdej platformie, zobacz sekcję SSL / TLS oraz stronę backendu TLS OpenSSL.

Pobierz ze strony pobierania sgcWebSockets lub uzyskaj przez GetIt albo swoje zarejestrowane konto.

Masz pytania, uwagi lub potrzebujesz pomocy w zaplanowaniu wdrożenia bez plików DLL? Skontaktuj się z nami, odpowiedź otrzymasz od osób, które napisały ten kod.