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.LoadPkcs12
,X509CertificateLoader.LoadPkcs12FromFile
,X509CertificateLoader.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>
자세한 내용은 경고 표시 안 함을 참조하세요.
.NET