次の方法で共有


macOS でサポートされていない OpenSSL 暗号化プリミティブ

.NET 10 以降、MacOS では、OpenSSL でサポートされる暗号化プリミティブはサポートされなくなりました。 System.Security.Cryptography.AesCcm と、OpenSSL に固有のクラス (System.Security.Cryptography.RSAOpenSsl など) は、macOS で PlatformNotSupportedException をスローするようになりました。

導入されたバージョン

.NET 10

以前の動作

以前は、OpenSSL に固有のクラス ( System.Security.Cryptography.RSAOpenSslなど) は、OpenSSL が使用可能な場合は macOS で動作していました。

System.Security.Cryptography.AesCcm OpenSSL が使用可能な場合は macOS で動作しました。

新しい動作

.NET 10 以降では、OpenSSL に固有のクラス ( RSAOpenSslなど) は、OpenSSL が使用可能な場合でも macOS では動作せず、 PlatformNotSupportedException 例外がスローされます。

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