OpenSSL

OpenSSL is een softwarebibliotheek voor toepassingen die communicatie via computernetwerken beveiligen tegen afluisteren of waarbij de identiteit van de andere partij moet worden vastgesteld. Het wordt veel gebruikt door internetservers, inclusief de meerderheid van HTTPS-websites.

 

Deze bibliotheek is vereist door componenten gebaseerd op de Indy-bibliotheek wanneer een beveiligde verbinding nodig is. Als uw applicatie OpenSSL vereist, moet u de benodigde bestanden in uw bestandssysteem hebben voordat u uw applicatie implementeert:

 

Momenteel ondersteunt sgcWebSockets de volgende versies: 1.0.2, 1.1 en 3.0 tot 3.3 openSSL.

 

Platform API 1.0 API 1.1 API 3.* Statisch/dynamisch koppelen
Windows (32-bit en 64-bit) libeay32.dll en ssleay32.dll libcrypto-1_1.dll and libssl-1_1.dll libcrypto-3.dll and libssl-3.dll Dynamisch
OSX libcrypto.dylib, libssl.dylib libcrypto.1.1.dylib, libssl.1.1.dylib libcrypto.3.dylib, libssl.3.dylib Dynamisch
iOS-apparaat (32-bit en 64-bit) libcrypto.a en libssl.a libcrypto.a en libssl.a libcrypto.a en libssl.a Static
iOS Simulator libcrypto.dylib, libssl.dylib libcrypto.1.1.dylib, libssl.1.1.dylib libcrypto.3.dylib, libssl.3.dylib Dynamisch
Android-apparaat libcrypto.so, libssl.so libcrypto.so, libssl.so libcrypto.so, libssl.so Dynamisch

 

 

Zie hieronder hoe u OpenSSL-bibliotheken configureert voor elk platform:

 

 

openSSL-configuraties

Op Indy gebaseerde sgcWebSockets-componenten bieden de mogelijkheid om bepaalde OpenSSL-eigenschappen te configureren. Toegang tot de volgende eigenschappen:

 

 

API-versie

 

Standaard Indy-bibliotheek staat alleen het laden van 1.0.2 OpenSSL-bibliotheken toe; deze bibliotheken zijn verouderd en de nieuwste OpenSSL-releases gebruiken de 1.1.1 API.

sgcWebSockets Enterprise stelt u in staat 1.1.1 openSSL-bibliotheken te laden; in deze eigenschap kunt u configureren welke openSSL API-versie wordt geladen. Per proces kan slechts één API-versie worden geladen (u kunt openSSL 1.0.2 en 1.1.1 bibliotheken dus niet in dezelfde toepassing mengen).

 

 

LibPath

 

Met deze eigenschap kunt u de locatie van de OpenSSL-bibliotheken instellen. Dit is nuttig voor Android- of OSX-projecten, waarbij de locatie van de OpenSSL-bibliotheken moet worden ingesteld.

Accepteert de volgende waarden:

 

 

 

Aanvullende OpenSSL-functies laden

Gebruik een callback om aanvullende OpenSSL-functies te laden die standaard niet zijn gedefinieerd. U kunt meer lezen op OpenSSL Extra functies laden.

 

Ciphers

Als u TLS 1.2 en 1.3 op uw server wilt ondersteunen met de beste beveiliging en prestaties, gebruik dan de volgende configuratie:

 

SSLOptions.Version := tls1_3;

SSLOptions.OpenSSL_Options.VersionMin := tls1_2;

SSLOptions.OpenSSL_Options.APIVersion := oslAPI_3_0;

 

Stel de volgende cijferlijst in.

 

AEAD-AES128-GCM-SHA256:AEAD-AES256-GCM-SHA384:AEAD-CHACHA20-POLY1305-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384

 

Zelfondertekende certificaten

U kunt zelfondertekende certificaten gebruiken voor testdoeleinden. U hoeft alleen het volgende commando uit te voeren om een zelfondertekend certificaat aan te maken:

 

openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem

Er worden 2 bestanden aangemaakt: cert.pem (certificaat) en key.pem (privésleutel). U kunt beide bestanden combineren tot één bestand. Maak een nieuw bestand aan en kopieer de inhoud van beide bestanden daarin. De structuur ziet er dan als volgt uit:

 

-----BEGIN PRIVATE KEY-----

....

-----END PRIVATE KEY-----

-----BEGIN CERTIFICATE-----

....

-----END CERTIFICATE-----

 

Veelvoorkomende fouten

SSL_GET_RECORD: wrong version number

 

Deze fout betekent dat de server en de client verschillende versies van het SSL/TLS-protocol gebruiken. Om dit op te lossen, probeert u de juiste versie in te stellen in het server- en/of clientcomponent.

 

Server.SSLOptions.Version

Client.TLSOptions.Version

 

SSL3_GET_RECORD: decryption failed or bad record mac

 

Deze fout wordt doorgaans gegenereerd wanneer:

 

1. Controleer of u de nieuwste versie van OpenSSL gebruikt. Als deze te oud is, werk dan bij naar de nieuwste ondersteunde versie.

2. Als deze fout willekeurig optreedt, komt dit meestal doordat meer dan één thread toegang heeft tot de OpenSSL-verbinding. U kunt proberen NotifyEvents = neNoSync in te stellen, wat betekent dat de gebeurtenissen: OnConnect, OnDisconnect, OnMessage... worden geactiveerd in de context van de verbindingsthread. Dit vermijdt sommige synchronisatieproblemen en biedt betere prestaties. Als nadeel, als u bijvoorbeeld een visueel besturingselement op een formulier bijwerkt wanneer u een bericht ontvangt, moet u uw eigen synchronisatiemethoden implementeren omdat visuele besturingselementen niet thread-veilig zijn.