Künstliche Intelligenz

Neu in .NET 10.0 [31]: Mehr Kontrolle beim Zertifikatsexport


Eine Neuerung in .NET 10.0 ist die Methode ExportPkcs12() zum Zertifikatsexport mit AES-Verschlüsselung und Hashing via SHA-2-256:

Weiterlesen nach der Anzeige


byte[] pfxData = cert.ExportPkcs12(Pkcs12ExportPbeParameters.Pbes2Aes256Sha256, password);





Dr. Holger Schwichtenberg ist technischer Leiter des Expertennetzwerks www.IT-Visions.de, das mit 53 renommierten Experten zahlreiche mittlere und große Unternehmen durch Beratungen und Schulungen sowie bei der Softwareentwicklung unterstützt. Durch seine Auftritte auf zahlreichen nationalen und internationalen Fachkonferenzen sowie mehr als 90 Fachbücher und mehr als 1500 Fachartikel gehört Holger Schwichtenberg zu den bekanntesten Experten für .NET und Webtechniken in Deutschland.

Die bisherige Methode Export() verwendet noch veraltete Algorithmen (3DES-Verschlüsselung und SHA1-Hashing). Die alten Verfahren (3DES / SHA1) aus Export() sind allerdings ebenfalls über die neue Methode möglich, wenn man es wirklich will:


byte[] pfxData = cert.ExportPkcs12(Pkcs12ExportPbeParameters.Pkcs12TripleDesSha1, password);


Folgender Code zeigt ein Beispiel zum Erstellen und Exportieren eines Zertifikats:


public void Run()
{
 CUI.Demo(nameof(FCL10_Certificates));
 
 string certPath = @"c:\temp\meinZertifikat.pfx";
 string password = "meinSehrGeheimesPasswort"; // Passwort zum Schutz des Zertifikats
 
 // Selbstsigniertes Zertifikat erstellen
 using (var rsa = RSA.Create(2048))
 {
  var request = new CertificateRequest(
      "CN=TestZertifikat",
      rsa,
      HashAlgorithmName.SHA256,
      RSASignaturePadding.Pkcs1);
 
  // Zertifikat für 1 Jahr gültig machen
  var cert = request.CreateSelfSigned(
      DateTimeOffset.Now,
      DateTimeOffset.Now.AddYears(1));
 
  // ALT: Zertifikat mit 3DES-Verschlüsselung und SHA1-Hashing exportieren
  // byte[] pfxData = cert.Export(X509ContentType.Pkcs12, password);
 
  // NEU: Zertifikat als AES mit SHA-2-256 exportieren
  byte[] pfxData = cert.ExportPkcs12(Pkcs12ExportPbeParameters.Pbes2Aes256Sha256, password);
 
  // NEUE Methode, aber alte Sicherheitsverfahren: 3DES mit SHA-1
  // byte[] pfxData = cert.ExportPkcs12(Pkcs12ExportPbeParameters.Pkcs12TripleDesSha1, password);
 
  // PFX-Datei speichern
  File.WriteAllBytes(certPath, pfxData);
 
  Console.WriteLine($"Test-Zertifikat erstellt und gespeichert unter: {certPath}");
 }
 
 if (!File.Exists(certPath))
 {
  Console.WriteLine($"Datei nicht gefunden: {certPath}");
 }
 else
 {
  // Zertifikat laden
  X509Certificate2 cert2 = X509CertificateLoader.LoadPkcs12FromFile(certPath, password);
  Console.WriteLine($"Zertifikat geladen von {certPath}:");
  Console.WriteLine($"IssuerName: {cert2.IssuerName.Name}");
  Console.WriteLine($"Signaturalgorithmus (Hashing): {cert2.SignatureAlgorithm.FriendlyName}");
  Console.WriteLine($"Öffentlicher Schlüsselalgorithmus: {cert2.PublicKey.Oid.FriendlyName}");
  Console.WriteLine($"Key-Algorithmus OID: {cert2.GetKeyAlgorithm()}");
  // Ob für ein Zertifikat-Export (z. B. .pfx/PKCS#12) AES verwendet wurde, steht nicht im Zertifikat selbst, sondern betrifft die Verschlüsselung der Containerdatei. Das Zertifikat enthält nur Infos zu Signatur- und Schlüsselalgorithmus (z. B. RSA, SHA256).
 }
}




Der Beispielcode erzeugt diese Ausgabe (Abb. 1).




(Bild: King / stock.adobe.com)

Das ist neu in .NET 11.0: Dr. Holger Schwichtenberg und weitere Experten präsentieren am 17. November 2026 auf der Online-Konferenz betterCode() .NET 11.0 die Änderungen für Entwicklerinnen und Entwickler. Tickets zum Frühbucherpreis sind im Online-Shop verfügbar.


(rme)



Source link

Beliebt

Die mobile Version verlassen