Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Конструкторы X509Certificate и X509Certificate2 принимаюющие содержимое в качестве byte[]пути ReadOnlySpan<byte>string к файлу устарели, начиная с .NET 9. Методы Import x509Certificate2Collection также устарели. При вызове их в коде выдается предупреждение SYSLIB0057 во время компиляции.
Причина обсоления
Затронутые API поддерживают загрузку сертификатов в нескольких форматах. Например, new X509Certificate2(data) загружается сертификат из вызываемого byte[]data.
data может быть одним из поддерживаемых форматов, включая X.509, PKCS7 или PKCS12/PFX.
Хотя этот метод был прост в использовании, он создал проблемы, в которых предоставленные пользователем данные передаются с другим форматом, отличным от предполагаемого. Это может позволить загружать PKCS12, где было загружено только содержимое X.509. Кроме того, это может привести к проблемам взаимодействия при обработке данных разными способами.
Обходное решение
Используйте другой API для загрузки содержимого сертификата в зависимости от предполагаемого типа контента.
Для загрузки содержимого X.509 или PKCS12 можно использовать новый класс X509CertificateLoader :
- Если вы загружаете содержимое X.509, используйте
X509CertificateLoader.LoadCertificateилиX509CertificateLoader.LoadCertificateFromFile. - Если вы загружаете содержимое PKCS12, используете
X509CertificateLoader.LoadPkcs12,X509CertificateLoader.LoadPkcs12FromFileX509CertificateLoader.LoadPkcs12CollectionилиX509CertificateLoader.LoadPkcs12CollectionFromFile. - Если вы загружаете содержимое PKCS7, используйте SignedCms пакет System.Security.Cryptography.Pkcs для проверки сертификатов в содержимом PKCS7.
- Если вы не уверены в типе контента, который вы загружаете, используйте GetCertContentType для определения типа контента и вызова соответствующего API.
Пакет шифрования Microsoft.Bcl.Cryptography предоставляется X509CertificateLoader для платформа .NET Framework и .NET Standard.
Отключение предупреждений
Если необходимо использовать устаревшие 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>
Дополнительные сведения см. в разделе Отключение предупреждений.