Barvna shema: Riviera
Trenutno dejavna stran: start » de » Dokumentation » Post-Quanten-Kryptografie » WKL.System.Security.Cryptography – Überblick » Fehlerbehebung » OpenSSL wird nicht geladen

OpenSSL wird nicht geladen

PostQuantumConfig.EnablePostQuantum oder die erste Operation mit PQ-Anteil wirft eine CryptographicException mit einer dieser Meldungen:

PostQuantumConfig.OpenSslPath 'C:\OpenSSL\bin' does not exist.
'libcrypto-3-x64.dll' not found in PostQuantumConfig.OpenSslPath 'C:\OpenSSL\bin'.
'libcrypto.so.3' not found in the default library search path. Install OpenSSL 3.5 or later, or set PostQuantumConfig.OpenSslPath.
OpenSSL 3.0.0 or higher required. Found version 1.1.1 in 'C:\OpenSSL\bin\libcrypto-3-x64.dll'.
Cannot load 'C:\OpenSSL\bin\libcrypto-3.dll': Win32 error 193 (a 32-bit process needs the x86 build of OpenSSL).
PostQuantumConfig.OpenSslPath was changed to 'D:\other' after libcrypto had been loaded from 'C:\OpenSSL\bin\libcrypto-3-x64.dll'. Set OpenSslPath before the first cryptographic operation.

Umgebung

Alle Zielsysteme mit dem Anbieter für OpenSSL: .NET Framework, .NET Core 3.1 und .NET 8 unter Windows, Linux und macOS. Blazor WebAssembly ist nicht betroffen, weil es OpenSSL als WebAssembly-Modul mitbringt.

Ursache

Die Bibliothek lädt libcrypto einmal je Prozess, aus PostQuantumConfig.OpenSslPath oder, ohne diese Angabe, über die Bibliothekssuche des Betriebssystems. Sie prüft danach, ob die Datei die Schnittstelle von OpenSSL 3 hat, also mindestens Version 3.0. Die Meldung nennt, welcher Schritt gescheitert ist:

MeldungUrsache
does not existDas Verzeichnis in OpenSslPath gibt es nicht.
not found in PostQuantumConfig.OpenSslPathIm Verzeichnis fehlt die Datei mit dem Namen, den Betriebssystem und Prozessarchitektur verlangen.
not found in the default library search pathOhne OpenSslPath hat die Suche des Betriebssystems keine libcrypto gefunden.
or higher required. Found versionDie Datei trägt den Namen einer OpenSSL-3-Bibliothek, ist aber älter als 3.0, etwa eine umbenannte Kopie.
Win32 error 193Die Datei passt nicht zur Prozessarchitektur, etwa eine 64-Bit-DLL in einem 32-Bit-Prozess.
was changed to … after libcrypto had been loadedOpenSslPath wurde nach dem ersten Laden geändert. Die Bibliothek wechselt die Installation während eines Prozesses nicht.

Lösung

  1. Installieren Sie OpenSSL ab 3.5 für die Architektur des Prozesses: 64 Bit, 32 Bit oder ARM. Ab 3.5 bietet der Default-Provider ML-DSA und ML-KEM an.
  2. Setzen Sie PostQuantumConfig.OpenSslPath beim Start der Anwendung auf das Verzeichnis mit libcrypto, bevor die erste kryptografische Operation läuft. Unter Windows ist das das Verzeichnis bin der Installation.
  3. Prüfen Sie den Dateinamen: libcrypto-3-x64.dll (Windows, 64 Bit), libcrypto-3.dll (Windows, 32 Bit), libcrypto-3-arm64.dll (Windows auf ARM), libcrypto.so.3 (Linux), libcrypto.3.dylib (macOS).
  4. Ändern Sie OpenSslPath nach dem Start nicht mehr. Für eine andere Installation starten Sie den Prozess neu.

Nach einem gescheiterten EnablePostQuantum enthält PostQuantumConfig.InitializationError die Meldung, und DefaultMode behält seinen bisherigen Wert. Wie Sie OpenSSL einbinden, beschreibt So binden Sie OpenSSL ein. Lädt OpenSSL, bietet aber ML-DSA oder ML-KEM nicht an, hilft OpenSSL bietet ML-DSA oder ML-KEM nicht an.

de/wiki/pqcrypt/lib/troubleshooting/openssl-not-loaded.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille