Delen via


SYSLIB0057: X509Certificate2- en X509Certificate-constructors voor binaire en bestandsinhoud zijn verouderd

De constructors op X509Certificate en X509Certificate2 die inhoud accepteren als een byte[], ReadOnlySpan<byte>of een string bestandspad zijn verouderd, te beginnen in .NET 9. De Import methoden op X509Certificate2Collection zijn ook verouderd. Als u deze in code aanroept, wordt er een waarschuwing SYSLIB0057 gegenereerd tijdens het compileren.

Reden voor verdoezeling

De betrokken API's ondersteunen het laden van certificaten in meerdere indelingen. Bijvoorbeeld, new X509Certificate2(data) een certificaat uit een byte[] aangeroepen .data data kan een van de ondersteunde indelingen zijn, waaronder X.509, PKCS7 of PKCS12/PFX.

Hoewel deze methode eenvoudig te gebruiken was, zijn er problemen ontstaan waarbij door de gebruiker opgegeven gegevens werden doorgegeven met een andere indeling dan bedoeld. Hierdoor kan PKCS12 worden geladen, waarbij alleen X.509-inhoud is geladen. Of het kan interoperabiliteitsproblemen maken door de gegevens op verschillende manieren te verwerken.

Tijdelijke oplossing

Gebruik een andere API om certificaatinhoud te laden, afhankelijk van het beoogde inhoudstype.

Een nieuwe klasse die wordt aangeroepen X509CertificateLoader , kan worden gebruikt om X.509- of PKCS12-inhoud te laden:

  • Als u X.509-inhoud laadt, gebruikt X509CertificateLoader.LoadCertificate u of X509CertificateLoader.LoadCertificateFromFile.
  • Als u PKCS12-inhoud laadt, gebruiktX509CertificateLoader.LoadPkcs12, X509CertificateLoader.LoadPkcs12FromFileof X509CertificateLoader.LoadPkcs12CollectionX509CertificateLoader.LoadPkcs12CollectionFromFile.
  • Als u PKCS7-inhoud laadt, gebruikt SignedCms u het pakket System.Security.Cryptography.Pkcs om certificaten in PKCS7-inhoud te inspecteren.
  • Als u niet zeker weet welk inhoudstype u laadt, kunt GetCertContentType u het inhoudstype bepalen en de juiste API aanroepen.

Het Microsoft.Bcl.Cryptography-pakket levert X509CertificateLoader .NET Framework en .NET Standard.

Een waarschuwing onderdrukken

Als u de verouderde API's moet gebruiken, kunt u de waarschuwing in code of in het projectbestand onderdrukken.

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de waarschuwing uit te schakelen en vervolgens opnieuw in te schakelen.

// Disable the warning.
#pragma warning disable SYSLIB0057

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

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

Als u alle SYSLIB0057 waarschuwingen in uw project wilt onderdrukken, voegt u een <NoWarn> eigenschap toe aan het projectbestand.

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

Zie Waarschuwingen onderdrukken voor meer informatie.