SYSLIB0057: X509Certificate2- und X509Certificate-Konstruktoren für Binärdateien und Dateiinhalte sind veraltet.

Die Konstruktoren für X509Certificate und X509Certificate2, die Inhalte als byte[], ReadOnlySpan<byte> oder string-Dateipfad akzeptieren, sind ab .NET 9 veraltet. Die Import-Methoden für X509Certificate2Collection sind ebenfalls veraltet. Wenn Sie diese im Code aufrufen, wird zur Kompilierzeit die Warnung SYSLIB0057 ausgelöst.

Grund für das Auslaufen

Die betroffenen APIs haben das Laden von Zertifikaten in mehreren Formaten unterstützt. new X509Certificate2(data) hat ein Zertifikat z. B. aus byte[], auch data genannt, abgerufen. data konnte eines der unterstützten Formate sein, einschließlich X.509, PKCS7 oder PKCS12/PFX.

Obwohl diese Methode einfacher anzuwenden war, führte sie zu Problemen, bei denen vom Benutzer bereitgestellte Daten in einem anderen Format als beabsichtigt übergeben wurden. Dies konnte dazu führen, dass PKCS12 geladen werden konnte, obwohl nur X.509-Inhalte geladen werden sollten. Stattdessen konnten auch Interoperabilitätsprobleme entstehen, weil die Daten auf unterschiedliche Weise behandeln wurden.

Problemumgehung

Verwenden Sie je nach beabsichtigtem Inhaltstyp eine andere API zum Laden von Zertifikatinhalten.

Eine neue Klasse namens X509CertificateLoader kann zum Laden von X.509- oder PKCS12-Inhalten verwendet werden:

  • Wenn Sie X.509-Inhalte laden möchten, verwenden X509CertificateLoader.LoadCertificate oder X509CertificateLoader.LoadCertificateFromFile.
  • Wenn Sie PKCS12-Inhalte laden möchten, verwenden Sie X509CertificateLoader.LoadPkcs12, X509CertificateLoader.LoadPkcs12FromFile, X509CertificateLoader.LoadPkcs12Collection oder X509CertificateLoader.LoadPkcs12CollectionFromFile.
  • Wenn Sie PKCS7-Inhalte laden, verwenden Sie SignedCms aus dem Paket „System.Security.Cryptography.Pkcs“, um Zertifikate in PKCS7-Inhalten zu prüfen.
  • Wenn Sie nicht sicher sind, welchen Inhaltstyp Sie laden, ermitteln Sie den Inhaltstyp mit GetCertContentType, und rufen Sie die entsprechende API auf.

Das Microsoft.Bcl.Cryptography-Paket stellt X509CertificateLoader für das .NET Framework und .NET Standard bereit.

Unterdrücken einer Warnung

Wenn Sie die veralteten APIs verwenden müssen, können Sie die Warnung im Code oder in Ihrer Projektdatei unterdrücken.

Um nur einen einzelnen Verstoß zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Warnung zu deaktivieren und dann wieder zu aktivieren.

// Disable the warning.
#pragma warning disable SYSLIB0057

// Code that uses obsolete API.
// ...

// Re-enable the warning.
#pragma warning restore SYSLIB0057

Um alle SYSLIB0057-Warnungen in Ihrem Projekt zu unterdrücken, fügen Sie ihrer Projektdatei eine <NoWarn>-Eigenschaft hinzu.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   ...
   <NoWarn>$(NoWarn);SYSLIB0057</NoWarn>
  </PropertyGroup>
</Project>

Weitere Informationen finden Sie unter Unterdrücken von Warnungen.