Barvna shema: Svetla
Trenutno dejavna stran: start » sl » Dokumentacija » Postkvantna kriptografija » WKL.System.Security.Cryptography – pregled » Navodila » Prenos potrdil s ključem PQ v datoteki PFX

Prenos potrdil s ključem PQ v datoteki PFX

Potrdilo s klasičnim ključem in ključem PQ želite prenesti v drug proces ali na drug računalnik, na primer z računalnika, na katerem ga izdate, na strežnik, ki ga uporablja.

Pregled rešitve

ElementNamen
ExportPfx(password)zapiše potrdilo, klasični ključ in ključ PQ v datoteko PKCS #12
X509Certificate2ExportExtensions.ImportPfx(bytes, password, flags)prebere datoteko in znova dodeli ključ PQ
X509Certificate2Collection.ExportPfx, ImportPfxCollectionisto za več potrdil, na primer z verigo
ExportPfx(password, pbeParameters)kot zgoraj, s šifriranjem po lastni izbiri

Izvedba

Izvoz; server je potrdilo s klasičnim ključem in ključem PQ v procesu:

using var serverRsa = RSA.Create(3072);
using var server = new CertificateRequest(
        "CN=www.example.com", serverRsa, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1)
    .CreateSelfSigned(DateTimeOffset.UtcNow, DateTimeOffset.UtcNow.AddYears(1), CryptoMode.Hybrid);
 
string password = Convert.ToBase64String(RandomNumberGenerator.GetBytes(24));
File.WriteAllBytes("www.example.com.pfx", server.ExportPfx(password));

Uvoz v drugem procesu:

using var imported = X509Certificate2ExportExtensions.ImportPfx(
    File.ReadAllBytes("www.example.com.pfx"), password, X509KeyStorageFlags.EphemeralKeySet);
 
using (var pqKey = imported.GetAlternativePrivateMLDsaKey())
{
    Console.WriteLine($"RSA: {imported.HasPrivateKey}, ML-DSA: {pqKey is not null}");
}

Za program, ki PBES2 ne bere, izrecno zapišite različico s Triple DES:

var legacy = new PbeParameters(PbeEncryptionAlgorithm.TripleDes3KeyPkcs12, HashAlgorithmName.SHA1, 2000);
File.WriteAllBytes("www.example.com-3des.pfx", server.ExportPfx(password, legacy));

Opombe

  • Uvažajte s knjižnico. new X509Certificate2(pfx, password) iz .NET datoteko prav tako prebere in prevzame potrdilo in klasični ključ, ključ PQ pa preskoči. Dodeli ga samo ImportPfx.
  • Brez izvoza brez ključa PQ. Če z ExportPfx(password, CryptoMode.Hybrid) izrecno zahtevate izvoz PQ, proces pa ključa PQ ne pozna, metoda sproži CryptographicException, namesto da bi tiho zapisala datoteko brez ključa PQ.
  • Čista potrdila ML-DSA. Pri njih datoteka nosi samo ključ ML-DSA. Po uvozu ključ vrne GetPrivateMLDsaKey; HasPrivateKey ostane false.
  • Šifriranje. Brez PbeParameters ExportPfx s ključem PQ šifrira po PBES2: AES-256-CBC, PBKDF2 s HMAC-SHA-256 in 2048 ponovitvami, MAC s SHA-256. S PbeParameters veljajo Aes128Cbc, Aes192Cbc ali Aes256Cbc s SHA-1, SHA-256, SHA-384 ali SHA-512 ali TripleDes3KeyPkcs12 s SHA-1. Druge kombinacije metoda zavrne s CryptographicException. V .NET Framework knjižnica PbeParameters in PbeEncryptionAlgorithm zagotovi sama, v imenskem prostoru System.Security.Cryptography.
  • CryptoMode.Classic. Brez PbeParameters ExportPfx zapiše natanko datoteko, ki jo zapiše Export(X509ContentType.Pfx, password) iz .NET, brez ključa PQ in s šifriranjem .NET.
  • Zaščitite geslo in datoteko. Datoteka je varna samo toliko kot njeno geslo. Uporabite dolgo naključno geslo, prenesite ga po drugi poti kot datoteko in datoteko po uvozu izbrišite.
  • .NET 8 v sistemu Linux. Če potrdilo samo nosi ključ ML-DSA ali ML-KEM, torej ne RSA ali ECDSA, .NET 8 v sistemu Linux datoteke PFX ne prebere; ImportPfx tam ne uspe s CryptographicException iz .NET. Hibridnih potrdil to ne zadeva. Taka potrdila v sistemu Linux prenesite kot datoteko PEM in ključ dodelite z ustrezno metodo Attach.

Sorodne teme

sl/wiki/pqcrypt/lib/how-to/export-and-import-pfx.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille