SYSLIB0057: A bináris és fájltartalmak X509Certificate2 és X509Certificate konstruktorai elavultak

A .NET 9-től kezdődően elavultak azok a X509CertificateX509Certificate2 konstruktorok, amelyek tartalmat fogadnak el , byte[]vagy ReadOnlySpan<byte> fájlelérési útvonalkéntstring. Az Import X509Certificate2Collection metódusai szintén elavultak. A kódban való meghívás figyelmeztetést SYSLIB0057 generál fordításkor.

A kényszer okának oka

Az érintett API-k több formátumban is támogatták a tanúsítványok betöltését. Például new X509Certificate2(data) betöltött egy tanúsítványt egy byte[] hívott datarendszerből. data bármilyen támogatott formátum lehet, például X.509, PKCS7 vagy PKCS12/PFX.

Bár ez a módszer könnyen használható volt, problémákat hozott létre, amikor a felhasználó által megadott adatokat a tervezettnél eltérő formátumban adták át. Ez lehetővé teheti a PKCS12 betöltését, ahol csak az X.509-tartalom tölthető be. Vagy interoperabilitási problémákat is eredményezhet az adatok különböző módon történő kezelése során.

Áthidaló megoldás

A tanúsítványtartalom betöltéséhez használjon másik API-t a kívánt tartalomtípustól függően.

Az X.509- vagy PKCS12-tartalom betöltéséhez egy új, úgynevezett X509CertificateLoader osztály használható:

  • Ha X.509-tartalmat tölt be, használja X509CertificateLoader.LoadCertificate vagy X509CertificateLoader.LoadCertificateFromFile.
  • Ha PKCS12-tartalmat tölt be, használja X509CertificateLoader.LoadPkcs12a , X509CertificateLoader.LoadPkcs12FromFilevagy X509CertificateLoader.LoadPkcs12CollectionX509CertificateLoader.LoadPkcs12CollectionFromFile.
  • Ha PKCS7-tartalmat tölt be, SignedCms használja a System.Security.Cryptography.Pkcs csomagból a tanúsítványok PKCS7-tartalomban való vizsgálatához.
  • Ha bizonytalan a betöltendő tartalomtípussal kapcsolatban, határozza GetCertContentType meg a tartalomtípust, és hívja meg a megfelelő API-t.

A Microsoft.Bcl.Cryptography csomag .NET-keretrendszer és .NET Standard csomagokat biztosítX509CertificateLoader.

Figyelmeztetés mellőzése

Ha az elavult API-kat kell használnia, letilthatja a figyelmeztetést a kódban vagy a projektfájlban.

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz, hogy letiltsa, majd engedélyezze újra a figyelmeztetést.

// Disable the warning.
#pragma warning disable SYSLIB0057

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

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

Ha el szeretné tiltani a SYSLIB0057 projekt összes figyelmeztetését, adjon hozzá egy tulajdonságot <NoWarn> a projektfájlhoz.

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

További információ: Figyelmeztetések mellőzése.