Color scheme: Dark
You are here: start » de » Dokumentation » Post-Quanten-Kryptografie » WKL.System.Security.Cryptography – Überblick » Anleitungen » So binden Sie OpenSSL ein

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

ElementZweck
PostQuantumConfig.OpenSslPathVerzeichnis, aus dem die Bibliothek libcrypto lädt
CryptoProviderFactory.RegisterProviderregistriert einen Anbieter ausdrücklich; ohne Aufruf registriert die Bibliothek den Anbieter für OpenSSL selbst
PostQuantumConfig.EnablePostQuantumlädt OpenSSL, prüft, ob es ML-DSA-65 und ML-KEM-768 anbietet, und setzt DefaultMode
PostQuantumConfig.InitializationErrorMeldung 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:

PlattformDatei
Windows, 64 Bitlibcrypto-3-x64.dll
Windows, 32 Bitlibcrypto-3.dll
Windows auf ARMlibcrypto-3-arm64.dll
Linuxlibcrypto.so.3
macOSlibcrypto.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.Extensions zur Anwendung gehört. CryptoProviderFactory.RegisterProvider brauchen Sie nur für einen anderen Anbieter, etwa den WebAssembly-Anbieter in Blazor WebAssembly.
  • Linux: das OpenSSL von .NET. OpenSslPath gilt nur für die Aufrufe dieser Bibliothek. X509Chain und der PFX-Import von .NET laden unter Linux die libcrypto des 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 Sie LD_LIBRARY_PATH vor 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. OpenSslPath legt 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 OpenSslPath danach auf einen anderen Wert, wirft die nächste Operation eine CryptographicException, statt den neuen Wert still zu übergehen.
  • Fehlermeldungen nennen Pfad und Version. Fehlt das Verzeichnis oder die Datei, wirft EnablePostQuantum eine CryptographicException, 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. DefaultMode bleibt 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 · Last modified: by Wolfgang van der Stille