SYSLIB0057: バイナリおよびファイル コンテンツ用の X509Certificate2 と X509Certificate コンストラクターは廃止されました

byte[]ReadOnlySpan<byte>、または string ファイル パスとしてコンテンツを受け入れる X509Certificate および X509Certificate2 のコンストラクターは、.NET 9 以降で廃止されました。 X509Certificate2Collection の Import メソッドも廃止されています。 これらをコードで呼び出すと、コンパイル時に警告 SYSLIB0057 が生成されます。

廃止の理由

影響を受ける API では、複数の形式での証明書の読み込みがサポートされていました。 たとえば、new X509Certificate2(data)data という名前の byte[] から証明書を読み込みました。 data は、X.509、PKCS7、PKCS12/PFX など、サポートされている任意の形式を使用できました。

このメソッドは使いやすかったですが、ユーザーが指定したデータが意図した形式とは異なる形式で渡されるという問題が発生しました。 その結果、本来は X.509 コンテンツのみを読み込むことを意図していたところで、PKCS12 が読み込まれる可能性がありました。 または、さまざまな方法でデータを処理することで、相互運用性の問題が発生する可能性がありました。

回避策

目的のコンテンツ タイプに応じて、別の API を使用して証明書のコンテンツを読み込みます。

X509CertificateLoader という新しいクラスを使用して、X.509 または PKCS12 コンテンツを読み込むことができます。

  • X.509 コンテンツを読み込む場合は、X509CertificateLoader.LoadCertificate または X509CertificateLoader.LoadCertificateFromFile を使用します。
  • PKCS12 コンテンツを読み込む場合は、X509CertificateLoader.LoadPkcs12X509CertificateLoader.LoadPkcs12FromFileX509CertificateLoader.LoadPkcs12Collection、または X509CertificateLoader.LoadPkcs12CollectionFromFile を使用します。
  • PKCS7 コンテンツを読み込む場合は、System.Security.Cryptography.Pkcs パッケージの SignedCms を使用して、PKCS7 コンテンツ内の証明書を検査します。
  • 読み込んでいるコンテンツ タイプが不明な場合は、GetCertContentType を使用してコンテンツ タイプを特定し、適切な API を呼び出します。

Microsoft.Bcl.Cryptography パッケージは、.NET Framework と .NET Standard の X509CertificateLoader を提供します。

警告を抑制する

古い API を使う必要がある場合は、コードまたはプロジェクト ファイルで警告を抑制することができます。

単一の違反だけを抑制するには、ソース ファイルにプリプロセッサ ディレクティブを追加して警告を無効にしてから、再度有効にします。

// Disable the warning.
#pragma warning disable SYSLIB0057

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

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

プロジェクトですべての SYSLIB0057 警告を抑制するには、プロジェクト ファイルに <NoWarn> プロパティを追加します。

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

詳細については、「警告を表示しない」を参照してください。