다음을 통해 공유


macOS에서 지원되지 않는 OpenSSL 암호화 기본 형식

.NET 10부터 OpenSSL 지원 암호화 기본 형식은 더 이상 macOS에서 지원되지 않습니다. System.Security.Cryptography.AesCcm 및 OpenSSL과 관련된 클래스, 예를 들어 System.Security.Cryptography.RSAOpenSsl, 는 이제 macOS에서 PlatformNotSupportedException를 발생시킵니다.

도입된 버전

.NET 10

이전 동작

이전에는 OpenSSL과 관련된 클래스(예: System.Security.Cryptography.RSAOpenSslOpenSSL을 사용할 수 있는 경우)가 macOS에서 작동했습니다.

System.Security.Cryptography.AesCcm OpenSSL을 사용할 수 있는 경우 macOS에서 작동합니다.

새 동작

.NET 10부터 OpenSSL 전용 클래스(예: RSAOpenSsl)는 OpenSSL을 사용할 수 있는 경우에도 PlatformNotSupportedException 예외가 발생하며, macOS에서는 작동하지 않습니다.

AesCcmPlatformNotSupportedException 예외를 발생시킵니다.

파괴적 변경 유형

이는 동작 변경.

변경 이유

OpenSSL 지원 기본 형식에 대한 지원은 macOS의 암호화가 OpenSSL로 구현된 .NET Core 1.0에서 시작되었습니다. 최신 버전의 OpenSSL은 macOS에서 제공되지 않으며 macOS에서 OpenSSL을 획득하고 구성하는 것이 번거로웠습니다. .NET Core 2.0 시간 프레임에서 암호화는 Apple의 기본 제공 기능으로 이동되었으므로 추가 구성 요소를 획득할 필요 없이 암호화 기능이 "방금 작동"했습니다.

OpenSSL에서 구현되는 것으로 남아 있는 것처럼 OpenSsl 접미사가 지정된 형식이며 AesCcm Apple의 암호화 라이브러리에 구현이 없는 형식입니다.

MacOS에서 이러한 OpenSSL 지원 기본 형식을 지원하는 것은 Apple이 특정 경로에서 라이브러리를 로드하는 것이 더 어려워졌고 macOS에서 소프트웨어를 배포하는 것이 복잡해짐에 따라 더욱 어려워졌습니다.

OpenSSL을 사용할 특정 의도 없이 OpenSSL 지원 기본 형식을 사용하는 경우 macOS 구현을 제공하는 팩터리를 사용하는 것이 좋습니다.

  • new DSAOpenSsl(...) ->DSA.Create(...)
  • new ECDiffieHellmanOpenSsl(...) ->ECDiffieHellman.Create(...)
  • new ECDsaOpenSsl(...) ->ECDsa.Create(...)
  • new RSAOpenSsl(...) ->RSA.Create(...)

System.Security.Cryptography.AesCcm 에는 macOS에 해당하는 기능이 없습니다. 대신 다른 암호화 기본 형식(예: System.Security.Cryptography.AesGcm)을 사용하는 것이 좋습니다.

영향을 받는 API