So binden Sie OpenSSL ein
Ihre Anwendung soll beim Start eine bestimmte OpenSSL-Installation laden und den Post-Quanten-Betrieb einschalten – oder mit einer verständlichen Meldung abbrechen, wenn das nicht gelingt.
Lösungsübersicht
| Element | Zweck |
|---|---|
PostQuantumConfig.OpenSslPath | Verzeichnis, aus dem die Bibliothek libcrypto lädt |
CryptoProviderFactory.RegisterProvider | registriert einen Anbieter ausdrücklich; ohne Aufruf registriert die Bibliothek den Anbieter für OpenSSL selbst |
PostQuantumConfig.EnablePostQuantum | lädt OpenSSL, prüft, ob es ML-DSA-65 und ML-KEM-768 anbietet, und setzt DefaultMode |
PostQuantumConfig.InitializationError | Meldung des letzten gescheiterten Ladeversuchs |
Umsetzung
Führen Sie diesen Code einmal beim Start der Anwendung aus, vor der ersten kryptografischen Operation:
using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using WKL.System.Security.Cryptography; using WKL.System.Security.Cryptography.X509Certificates; PostQuantumConfig.OpenSslPath = @"C:\OpenSSL\bin"; try { PostQuantumConfig.EnablePostQuantum(CryptoMode.Hybrid); } catch (CryptographicException ex) { Console.Error.WriteLine($"Post-Quanten-Betrieb nicht verfügbar: {ex.Message}"); throw; }
Die Bibliothek wählt die Datei nach Betriebssystem und Prozessarchitektur:
| Plattform | Datei |
|---|---|
| Windows, 64 Bit | libcrypto-3-x64.dll |
| Windows, 32 Bit | libcrypto-3.dll |
| Windows auf ARM | libcrypto-3-arm64.dll |
| Linux | libcrypto.so.3 |
| macOS | libcrypto.3.dylib |
Ohne OpenSslPath gilt die Bibliothekssuche des Betriebssystems. Das genügt, wenn die erste Datei, die
diese Suche findet, zu einem OpenSSL ab 3.5 gehört. Unter Windows setzen Sie OpenSslPath immer.
Hinweise
- Anbieter. Den Anbieter, der die PQ-Verfahren über OpenSSL rechnet, registriert die Bibliothek beim ersten Bedarf selbst, sofern die Assembly
WKL.System.Security.Cryptography.Extensionszur Anwendung gehört.CryptoProviderFactory.RegisterProviderbrauchen Sie nur für einen anderen Anbieter, etwa den WebAssembly-Anbieter in Blazor WebAssembly. - Linux: das OpenSSL von .NET.
OpenSslPathgilt nur für die Aufrufe dieser Bibliothek.X509Chainund der PFX-Import von .NET laden unter Linux dielibcryptodes Systems selbst. Ist das eine Fassung ohne ML-DSA, etwa OpenSSL 3.0 unter Ubuntu 24.04, scheitert der Aufbau einer Kette mit reinem ML-DSA-Aussteller. Lassen Sie dann auch .NET die Installation ab 3.5 laden, indem SieLD_LIBRARY_PATHvor dem Start des Prozesses auf deren Bibliotheksverzeichnis setzen. Hybride Zertifikate mit RSA- oder ECDSA-Schlüssel betrifft das nicht. - Mehrere OpenSSL-Kopien unter Windows. Git, VPN-Clients und andere Programme bringen eigene, oft ältere OpenSSL-Dateien mit. Die Suche von Windows nimmt die erste, die sie findet.
OpenSslPathlegt die Installation fest. - Einmal je Prozess. Die Bibliothek lädt OpenSSL beim ersten Gebrauch und behält diese Wahl bis zum Ende des Prozesses. Setzen Sie
OpenSslPathdanach auf einen anderen Wert, wirft die nächste Operation eineCryptographicException, statt den neuen Wert still zu übergehen. - Fehlermeldungen nennen Pfad und Version. Fehlt das Verzeichnis oder die Datei, wirft
EnablePostQuantumeineCryptographicException, die den Pfad nennt. Bietet die geladene Installation ML-DSA-65 oder ML-KEM-768 nicht an, nennt die Meldung das Verfahren, die Version und den Pfad.DefaultModebleibt in beiden Fällen unverändert. Zur Behebung: OpenSSL wird nicht geladen und OpenSSL bietet ML-DSA oder ML-KEM nicht an. - Pfad aus der Konfiguration. Lesen Sie den Pfad in Anwendungen mit Konfigurationsdatei aus der Konfiguration, damit jede Umgebung ihre Installation angibt, ohne dass Sie die Anwendung neu übersetzen.
Verwandte Themen
de/wiki/pqcrypt/lib/how-to/configure-openssl.txt · Zuletzt geändert: von Wolfgang van der Stille