Bagikan melalui


SYSLIB0057: Konstruktor X509Certificate2 dan X509Certificate untuk konten biner dan file sudah usang

Konstruktor pada X509Certificate dan X509Certificate2 yang menerima konten sebagai byte[], ReadOnlySpan<byte>, atau string jalur file usang, dimulai dari .NET 9. Metode Import pada X509Certificate2Collection juga usang. Memanggilnya dalam kode menghasilkan peringatan SYSLIB0057 pada waktu kompilasi.

Alasan kedaluarsa

API yang terpengaruh mendukung sertifikat pemuatan dalam beberapa format. Misalnya, new X509Certificate2(data) memuat sertifikat dari yang byte[] disebut data. data bisa menjadi salah satu format yang didukung, termasuk X.509, PKCS7, atau PKCS12/PFX.

Meskipun metode ini mudah digunakan, metode ini membuat masalah di mana data yang disediakan pengguna diteruskan dengan format yang berbeda dari yang dimaksudkan. Ini mungkin memungkinkan pemuatan PKCS12 di mana hanya konten X.509 yang dimaksudkan untuk dimuat. Atau mungkin menciptakan masalah interoperabilitas dari menangani data dengan cara yang berbeda.

Solusi Sementara

Gunakan API yang berbeda untuk memuat konten sertifikat, tergantung pada jenis konten yang dimaksudkan.

Kelas baru yang disebut X509CertificateLoader dapat digunakan untuk memuat konten X.509 atau PKCS12:

  • Jika Anda memuat konten X.509, gunakan X509CertificateLoader.LoadCertificate atau X509CertificateLoader.LoadCertificateFromFile.
  • Jika Anda memuat konten PKCS12, gunakan X509CertificateLoader.LoadPkcs12, , X509CertificateLoader.LoadPkcs12FromFileX509CertificateLoader.LoadPkcs12Collection, atau X509CertificateLoader.LoadPkcs12CollectionFromFile.
  • Jika Anda memuat konten PKCS7, gunakan SignedCms dari paket System.Security.Cryptography.Pkcs untuk memeriksa sertifikat dalam konten PKCS7.
  • Jika Anda tidak yakin tentang jenis konten yang Anda muat, gunakan GetCertContentType untuk menentukan jenis konten dan memanggil API yang sesuai.

Paket Microsoft.Bcl.Cryptography disediakan X509CertificateLoader untuk .NET Framework dan .NET Standard.

Menyembunyikan peringatan

Jika Anda harus menggunakan API usang, Anda dapat menekan peringatan dalam kode atau dalam file proyek Anda.

Untuk menekan hanya satu pelanggaran, tambahkan direktif praprosedur ke file sumber Anda untuk menonaktifkan lalu mengaktifkan kembali peringatan.

// Disable the warning.
#pragma warning disable SYSLIB0057

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

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

Untuk menekan semua SYSLIB0057 peringatan dalam proyek Anda, tambahkan <NoWarn> properti ke file proyek Anda.

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

Untuk informasi selengkapnya, lihat Menyembunyikan peringatan.