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 ofX509CertificateLoader.LoadCertificateFromFile
. - Als u PKCS12-inhoud laadt, gebruikt
X509CertificateLoader.LoadPkcs12
,X509CertificateLoader.LoadPkcs12FromFile
ofX509CertificateLoader.LoadPkcs12Collection
X509CertificateLoader.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.