.NET'te Platformlar Arası Şifreleme

.NET'teki şifreleme işlemleri işletim sistemi (OS) kitaplıkları tarafından gerçekleştirilir. Bu bağımlılığın avantajları vardır:

  • .NET uygulamaları işletim sistemi güvenilirliğinden yararlanıyor. Şifreleme kitaplıklarının güvenlik açıklarından korunması işletim sistemi satıcıları için yüksek önceliklidir. Bunu yapmak için sistem yöneticilerinin uygulaması gereken güncelleştirmeleri sağlar.
  • İşletim sistemi kitaplıkları FIPS ile doğrulanmışsa .NET uygulamaları FIPS ile doğrulanmış algoritmalara erişebilir.

İşletim sistemi kitaplıklarına bağımlılık, .NET uygulamalarının yalnızca işletim sisteminin desteklediği şifreleme özelliklerini kullanabileceği anlamına da gelir. Tüm platformlar belirli temel özellikleri desteklese de, .NET'in desteklediği bazı özellikler bazı platformlarda kullanılamaz. Bu makale, her platformda desteklenen özellikleri tanımlar.

Bu makalede, .NET'te şifreleme hakkında bilgi sahibi olduğunuz varsayılır. Daha fazla bilgi için bkz . .NET Şifreleme Modeli ve .NET Şifreleme Hizmetleri.

Karma algoritmalar

Sınıflar da dahil olmak üzere *Managed tüm karma algoritma ve karma tabanlı ileti kimlik doğrulaması (HMAC) sınıfları, Tarayıcı WASM'de .NET dışında işletim sistemi kitaplıklarına ertelenir. Tarayıcı WASM'de SHA-1, SHA-2-256, SHA-2-384, SHA-2-512 yönetilen kod kullanılarak uygulanır.

SHA-3

.NET 8, SHAKE-128 ve SHAKE-256 dahil olmak üzere SHA-3 karma algoritmaları için destek kullanıma sunulmuştur. SHA-3 desteği şu anda Windows 11 derleme 25324 veya sonraki sürümlerde ve OpenSSL 1.1.1 veya üzeri yüklü Linux'ta desteklenmektedir.

Simetrik şifreleme

Temel alınan şifreler ve zincirleme, sistem kitaplıkları tarafından gerçekleştirilir.

Şifre + Mod Windows Linux macOS iOS, tvOS, MacCatalyst Android
AES-CBC ✔️ ✔️ ✔️ ✔️ ✔️
AES-ECB ✔️ ✔️ ✔️ ✔️ ✔️
AES-CFB8 ✔️ ✔️ ✔️ ✔️ ✔️
AES-CFB128 ✔️ ✔️ ✔️ ✔️ ✔️
3DES-CBC ✔️ ✔️ ✔️ ✔️ ✔️
3DES-ECB ✔️ ✔️ ✔️ ✔️ ✔️
3DES-CFB8 ✔️ ✔️ ✔️ ✔️ ✔️
3DES-CFB64 ✔️ ✔️ ✔️ ✔️ ✔️
DES-CBC ✔️ ✔️ ✔️ ✔️ ✔️
DES-ECB ✔️ ✔️ ✔️ ✔️ ✔️
DES-CFB8 ✔️ ✔️ ✔️ ✔️ ✔️
RC2-CBC ✔️ ✔️ ✔️ ✔️
RC2-ECB ✔️ ✔️ ✔️ ✔️
RC2-CFB

Kimliği doğrulanmış şifreleme

AES-CCM, AES-GCM ve ChaCha20Poly1305 için sırasıyla , System.Security.Cryptography.AesGcmve System.Security.Cryptography.ChaCha20Poly1305 sınıfları aracılığıyla System.Security.Cryptography.AesCcmkimliği doğrulanmış şifreleme (AE) desteği sağlanır.

Kimlik doğrulama şifrelemesi algoritmayı desteklemek için daha yeni platform API'leri gerektirdiğinden tüm platformlarda destek bulunmayabilir. Algoritma IsSupported sınıflarında statik özelliği, geçerli platformun algoritmayı desteklese de desteklemese de çalışma zamanında algılamak için kullanılabilir.

Şifre + Mod Windows Linux macOS iOS, tvOS, MacCatalyst Android Tarayıcı
AES-GCM ✔️ ✔️ ⚠️ ✔️
AES-CCM ✔️ ✔️ ⚠️ ✔️
ChaCha20Poly1305 Windows 10 Derleme 20142+ OpenSSL 1.1.0+ ⚠️ API Düzeyi 28+

macOS üzerinde AES-CCM

macOS'ta sistem kitaplıkları üçüncü taraf kodu için AES-CCM'yi desteklemez, bu nedenle AesCcm sınıfı destek için OpenSSL kullanır. macOS'taki kullanıcıların bu türün çalışması için uygun bir OpenSSL (libcrypto) kopyası edinmeleri ve sistemin varsayılan olarak kitaplığı yükleyeceği bir yolda olması gerekir. OpenSSL'yi Homebrew gibi bir paket yöneticisinden yüklemenizi öneririz.

macOS'ta libcrypto.0.9.7.dylib bulunan ve libcrypto.0.9.8.dylib kitaplıkları, OpenSSL'nin önceki sürümlerindendir ve kullanılmayacaktır. libcrypto.35.dylib, libcrypto.41.dylibve libcrypto.42.dylib kitaplıkları LibreSSL'dendir ve kullanılmaz.

macOS üzerinde AES-GCM ve ChaCha20Poly1305

macOS, üçüncü taraf kodu için macOS 10.15'e kadar AES-GCM veya ChaCha20Poly1305'i desteklemedi. .NET 8'in öncesinde, AesGcmChaCha20Poly1305 AES-CCM ile aynı gereksinime sahiptir ve bu türlerin çalışması için kullanıcıların OpenSSL yüklemesi gerekir.

.NET 8'den başlayarak macOS üzerinde .NET, Apple'ın AES-GCM ve ChaCha20Poly1305 için CryptoKit çerçevesini kullanacaktır. Kullanıcıların macOS üzerinde AES-GCM veya ChaCha20Poly1305 için ek bağımlılıkları yüklemesi veya yapılandırması gerekmez.

AES-CCM anahtarları, nonce'lar ve etiketler

  • Anahtar Boyutları

    AES-CCM, 128, 192 ve 256 bit anahtarlarla çalışır.

  • Nonce Boyutları

    sınıfı AesCcm 56, 64, 72, 80, 88, 96 ve 104 bit (7, 8, 9, 10, 11, 12 ve 13 bayt) nonce'ları destekler.

  • Etiket Boyutları

    sınıfı AesCcm 32, 48, 64, 80, 96, 112 ve 128 bit (4, 8, 10, 12, 14 ve 16 bayt) etiketleri oluşturmayı veya işlemeyi destekler.

AES-GCM anahtarları, nonce'lar ve etiketler

  • Anahtar Boyutları

    AES-GCM 128, 192 ve 256 bit anahtarlarla çalışır.

  • Nonce Boyutları

    AesGcm sınıfı yalnızca 96 bit (12 bayt) nonce'ları destekler.

  • Etiket Boyutları Windows ve Linux'ta sınıfı 96, AesGcm 104, 112, 120 ve 128 bit (12, 13, 14, 15 ve 16 bayt) etiketlerin oluşturulmasını veya işlenmesini destekler. macOS'ta, CryptoKit çerçevesinin sınırlamaları nedeniyle etiket boyutu 128 bit (16 bayt) ile sınırlıdır.

ChaCha20Poly1305 tuşları, nonces ve etiketler.

ChaCha20Poly1305 anahtar, nonce ve kimlik doğrulama etiketi için sabit bir boyuta sahiptir. ChaCha20Poly1305 her zaman 256 bit anahtar, 96 bit (12 bayt) nonce ve 128 bit (16 bayt) etiketi kullanır.

Asimetrik şifreleme

Bu bölüm aşağıdaki alt bölümleri içerir:

RSA

RSA (Rivest–Shamir–Adleman) anahtar oluşturma, işletim sistemi kitaplıkları tarafından gerçekleştirilir ve boyut sınırlamalarına ve performans özelliklerine tabidir.

RSA anahtar işlemleri işletim sistemi kitaplıkları tarafından gerçekleştirilir ve yüklenebilen anahtar türleri işletim sistemi gereksinimlerine tabidir.

.NET, "ham" (unpadded) RSA işlemlerini kullanıma sunmaz.

Doldurma ve özet desteği platforma göre farklılık gösterir:

Doldurma Modu Windows (CNG) Linux (OpenSSL) macOS iOS, tvOS, MacCatalyst Android Windows (CAPI)
PKCS1 Şifrelemesi ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
OAEP - SHA-1 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
OAEP - SHA-2 ✔️ ✔️ ✔️ ✔️ ✔️
OAEP - SHA-32 Windows 11 Derlemesi 25324+ OpenSSL 1.1.1+
PKCS1 İmzası (MD5, SHA-1) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
PKCS1 İmzası (SHA-2) ✔️ ✔️ ✔️ ✔️ ✔️ ⚠️1
PKCS1 İmzası (SHA-3)2 Windows 11 Derlemesi 25324+ OpenSSL 1.1.1+
PSS ✔️ ✔️ ✔️ ✔️ ✔️

1 Windows CryptoAPI (CAPI), SHA-2 algoritmasıyla PKCS1 imzası özelliğine sahiptir. Ancak tek tek RSA nesnesi, onu desteklemeyen bir şifreleme hizmeti sağlayıcısına (CSP) yüklenebilir.

2 .NET 8 gerektirir.

Windows üzerinde RSA

RSA yerel birlikte çalışma

.NET, programların .NET şifreleme kodunun kullandığı işletim sistemi kitaplıklarıyla birlikte çalışması için türleri kullanıma sunar. Söz konusu türler platformlar arasında çeviri yapmaz ve yalnızca gerektiğinde doğrudan kullanılmalıdır.

Tür Windows Linux macOS iOS, tvOS, MacCatalyst Android
RSACryptoServiceProvider ✔️ ⚠️1 ⚠️1 ⚠️1 ⚠️1
RSACng ✔️
RSAOpenSsl ✔️ ⚠️2

1 Windows olmayanlarda, RSACryptoServiceProvider mevcut programlarla uyumluluk için kullanılabilir. Bu durumda, adlandırılmış anahtar açma gibi işletim sistemi birlikte çalışması gerektiren herhangi bir yöntem bir PlatformNotSupportedExceptionoluşturur.

2 macOS'ta, RSAOpenSsl OpenSSL yüklüyse çalışır ve dinamik kitaplık yükleme yoluyla uygun bir libcrypto dylib bulunabilir. Uygun bir kitaplık bulunamazsa özel durumlar oluşturulur.

ECDSA

ECDSA (Eliptik Eğri Dijital İmza Algoritması) anahtar oluşturma işlemi işletim sistemi kitaplıkları tarafından yapılır ve boyut sınırlamalarına ve performans özelliklerine tabidir.

ECDSA anahtar eğrileri işletim sistemi kitaplıkları tarafından tanımlanır ve sınırlamalarına tabidir.

Eliptik Eğri Windows 10 Windows 7 - 8.1 Linux macOS iOS, tvOS, MacCatalyst Android
NIST P-256 (secp256r1) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
NIST P-384 (secp384r1) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
NIST P-521 (secp521r1) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Beyin havuzu eğrileri (adlandırılmış eğriler olarak) ✔️ ⚠️1 ⚠️4
Diğer adlandırılmış eğriler ⚠️2 ⚠️1 ⚠️4
Açık eğriler ✔️ ✔️ ✔️
Açık olarak dışarı veya içeri aktarma ✔️ 3 ✔️ 3 3 ✔️

1 Linux dağıtımlarının tümü aynı adlandırılmış eğrileri desteklemez.

2 Windows 10'da Windows CNG'ye adlandırılmış eğriler desteği eklendi. Daha fazla bilgi için bkz . Eliptik Eğriler Adlı CNG. Adlandırılmış eğriler, Windows 7'deki üç eğri dışında Windows'un önceki sürümlerinde kullanılamaz.

3 Açık eğri parametreleriyle dışarı aktarma işlemi, Apple platformlarında veya Windows'un önceki sürümlerinde bulunmayan işletim sistemi kitaplığı desteği gerektirir.

4 Bazı eğriler için Android desteği Android sürümüne bağlıdır. Android dağıtımcıları, Android derlemelerinde de eğrileri eklemeyi veya kaldırmayı seçebilir.

ECDSA Yerel Birlikte Çalışma

.NET, programların .NET şifreleme kodunun kullandığı işletim sistemi kitaplıklarıyla birlikte çalışması için türleri kullanıma sunar. İlgili türler platformlar arasında çevrilmediğinden yalnızca gerektiğinde doğrudan kullanılmalıdır.

Tür Windows Linux macOS iOS, tvOS, MacCatalyst Android
ECDsaCng ✔️
ECDsaOpenSsl ✔️ ⚠️*

* MacOS'ta, ECDsaOpenSsl sistemde OpenSSL yüklüyse ve dinamik kitaplık yükleme yoluyla uygun bir libcrypto dylib bulunabiliyorsa çalışır. Uygun bir kitaplık bulunamazsa özel durumlar oluşturulur.

ECDH

ECDH (Elliptic Curve Diffie-Hellman) anahtar oluşturma işlemi işletim sistemi kitaplıkları tarafından yapılır ve boyut sınırlamalarına ve performans özelliklerine tabidir.

sınıfı, ECDiffieHellman ECDH hesaplamasının "ham" değerini ve aşağıdaki anahtar türetme işlevlerini destekler:

  • HASH(Z)
  • HASH(önceki || Z || ekleme)
  • HMAC(anahtar, Z)
  • HMAC(key, prepend || Z || ekleme)
  • HMAC(Z, Z)
  • HMAC(Z, önceki || Z || ekleme)
  • Tls11Prf(etiket, çekirdek)

"Ham" anahtar türetmesi .NET 8'de kullanıma sunulmuştur.

ECDH anahtar eğrileri işletim sistemi kitaplıkları tarafından tanımlanır ve sınırlamalarına tabidir.

Eliptik Eğri Windows 10 Windows 7 - 8.1 Linux macOS iOS, tvOS, MacCatalyst Android
NIST P-256 (secp256r1) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
NIST P-384 (secp384r1) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
NIST P-521 (secp521r1) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Beyin havuzu eğrileri (adlandırılmış eğriler olarak) ✔️ ⚠️1 ⚠️4
Diğer adlandırılmış eğriler ⚠️2 ⚠️1 ⚠️4
Açık eğriler ✔️ ✔️ ✔️
Açık olarak dışarı veya içeri aktarma ✔️ 3 ✔️ 3 3 ✔️

1 Linux dağıtımlarının tümü aynı adlandırılmış eğrileri desteklemez.

2 Windows 10'da Windows CNG'ye adlandırılmış eğriler desteği eklendi. Daha fazla bilgi için bkz . Eliptik Eğriler Adlı CNG. Adlandırılmış eğriler, Windows 7'deki üç eğri dışında Windows'un önceki sürümlerinde kullanılamaz.

3 Açık eğri parametreleriyle dışarı aktarma işlemi, Apple platformlarında veya Windows'un önceki sürümlerinde bulunmayan işletim sistemi kitaplığı desteği gerektirir.

4 Bazı eğriler için Android desteği Android sürümüne bağlıdır. Android dağıtımcıları, Android derlemelerinde de eğrileri eklemeyi veya kaldırmayı seçebilir.

ECDH yerel birlikte çalışma

.NET, programların .NET'in kullandığı işletim sistemi kitaplıklarıyla birlikte çalışmalarına izin vermek için türleri kullanıma sunar. İlgili türler platformlar arasında çevrilmediğinden yalnızca gerektiğinde doğrudan kullanılmalıdır.

Tür Windows Linux macOS iOS, tvOS, MacCatalyst Android
ECDiffieHellmanCng ✔️
ECDiffieHellmanOpenSsl ✔️ ⚠️*

* macOS'ta OpenSSL ECDiffieHellmanOpenSsl yüklüyse çalışır ve dinamik kitaplık yükleme yoluyla uygun bir libcrypto dylib bulunabilir. Uygun bir kitaplık bulunamazsa özel durumlar oluşturulur.

DSA

DSA (Dijital İmza Algoritması) anahtar oluşturma işlemi sistem kitaplıkları tarafından gerçekleştirilir ve boyut sınırlamalarına ve performans özelliklerine tabidir.

İşlev Windows CNG Linux macOS Windows CAPI iOS, tvOS, MacCatalyst Android
Anahtar oluşturma (<= 1024 bit) ✔️ ✔️ ✔️ ✔️
Anahtar oluşturma (> 1024 bit) ✔️ ✔️ ✔️
Anahtarları yükleme (<= 1024 bit) ✔️ ✔️ ✔️ ✔️ ✔️
Anahtarlar yükleniyor (> 1024 bit) ✔️ ✔️ ⚠️* ✔️
FIPS 186-2 ✔️ ✔️ ✔️ ✔️ ✔️
FIPS 186-3 (SHA-2 imzaları) ✔️ ✔️ ✔️

* macOS, 1024 bitten büyük DSA anahtarlarını yükler, ancak bu anahtarların davranışı tanımlanmamıştır. FIPS 186-3'e göre davranmıyorlar.

Windows üzerinde DSA

DSA yerel birlikte çalışma

.NET, programların .NET şifreleme kodunun kullandığı işletim sistemi kitaplıklarıyla birlikte çalışması için türleri kullanıma sunar. İlgili türler platformlar arasında çevrilmediğinden yalnızca gerektiğinde doğrudan kullanılmalıdır.

Tür Windows Linux macOS iOS, tvOS, MacCatalyst Android
DSACryptoServiceProvider ✔️ ⚠️1 ⚠️1 ⚠️1
DSACng ✔️
DSAOpenSsl ✔️ ⚠️2

1 Windows olmayanlarda, DSACryptoServiceProvider mevcut programlarla uyumluluk için kullanılabilir. Bu durumda, adlandırılmış anahtar açma gibi sistem birlikte çalışması gerektiren herhangi bir yöntem bir PlatformNotSupportedExceptionoluşturur.

2 macOS'ta, DSAOpenSsl OpenSSL yüklüyse çalışır ve dinamik kitaplık yükleme yoluyla uygun bir libcrypto dylib bulunabilir. Uygun bir kitaplık bulunamazsa özel durumlar oluşturulur.

X.509 Sertifikaları

.NET'teki X.509 sertifikalarına yönelik desteğin çoğu işletim sistemi kitaplıklarından gelir. Bir sertifikayı .NET'teki bir X509Certificate2 veya X509Certificate örneğine yüklemek için, sertifikanın temel işletim sistemi kitaplığı tarafından yüklenmesi gerekir.

PKCS12/PFX okuma

Senaryo Windows Linux macOS iOS, tvOS, MacCatalyst Android
Boş ✔️ ✔️ ✔️ ✔️ ✔️
Bir sertifika, özel anahtar yok ✔️ ✔️ ✔️ ✔️ ✔️
Özel anahtarla bir sertifika ✔️ ✔️ ✔️ ✔️ ✔️
Birden çok sertifika, özel anahtar yok ✔️ ✔️ ✔️ ✔️ ✔️
Birden çok sertifika, bir özel anahtar ✔️ ✔️ ✔️ ✔️ ✔️
Birden çok sertifika, birden çok özel anahtar ✔️ ✔️ ✔️ ✔️ ✔️

PKCS12/PFX yazma

Senaryo Windows Linux macOS iOS, tvOS, MacCatalyst Android
Boş ✔️ ✔️ ✔️ ✔️ ✔️
Bir sertifika, özel anahtar yok ✔️ ✔️ ✔️ ✔️ ✔️
Özel anahtarla bir sertifika ✔️ ✔️ ✔️ ✔️ ✔️
Birden çok sertifika, özel anahtar yok ✔️ ✔️ ✔️ ✔️ ✔️
Birden çok sertifika, bir özel anahtar ✔️ ✔️ ✔️ ✔️ ✔️
Birden çok sertifika, birden çok özel anahtar ✔️ ✔️ ✔️ ✔️ ✔️
Kısa ömürlü yükleme ✔️ ✔️ ✔️ ✔️

macOS, diske yazma gerektiren anahtarlık nesnesi olmadan sertifika özel anahtarlarını yükleyemez. Anahtarlıklar PFX yüklemesi için otomatik olarak oluşturulur ve artık kullanımda olmadığında silinir. X509KeyStorageFlags.EphemeralKeySet seçeneği özel anahtarın diske yazılmaması gerektiği anlamına gelir ve macOS'ta bu bayrağın belirtilmesi bir PlatformNotSupportedExceptionile sonuçlanabilir.

PKCS7 sertifika koleksiyonu yazma

Hem Windows hem de Linux DER ile kodlanmış PKCS7 blobları yayar. macOS süresiz uzunlukta CER ile kodlanmış PKCS7 blobları yayar.

X509store

Windows'da sınıfı, X509Store Windows Sertifika Deposu API'lerinin bir gösterimidir. Bu API'ler .NET Core ve .NET 5'te .NET Framework ile aynı şekilde çalışır.

Windows olmayanlarda sınıfı sistem X509Store güveni kararlarının (salt okunur), kullanıcı güveni kararlarının (okuma-yazma) ve kullanıcı anahtarı depolama alanının (okuma-yazma) bir projeksiyonudur.

Aşağıdaki tablolarda her platformda hangi senaryoların desteklendiği gösterilmektedir. Desteklenmeyen senaryolar için (❌ tablolarda) bir CryptographicException oluşturulur.

Mağazam

Senaryo Windows Linux macOS iOS, tvOS, MacCatalyst Android
CurrentUser\My (ReadOnly) dosyasını açın ✔️ ✔️ ✔️ ✔️ ✔️
CurrentUser\My Dosyasını Aç (ReadWrite) ✔️ ✔️ ✔️ ✔️ ✔️
CurrentUser\My (ExistingOnly) dosyasını açın ✔️ ⚠️ ✔️ ✔️ ✔️
LocalMachine\My dosyasını açın ✔️ ✔️ ✔️ ✔️

Linux'ta depolar ilk yazmada oluşturulur ve varsayılan olarak hiçbir kullanıcı deposu yoktur, bu nedenle ile ExistingOnly açma CurrentUser\My işlemi başarısız olabilir.

macOS'ta mağaza, CurrentUser\My varsayılan olarak kullanıcının varsayılan anahtarlığıdır login.keychain . Mağaza LocalMachine\My şeklindedir System.keychain.

Kök depo

Senaryo Windows Linux macOS iOS, tvOS, MacCatalyst Android
CurrentUser\Root'ı aç (Salt Okunur) ✔️ ✔️ ✔️ ✔️
CurrentUser\Root Dosyasını Aç (ReadWrite) ✔️ ✔️
CurrentUser\Root'ı aç (ExistingOnly) ✔️ ⚠️ ✔️ (ReadOnly ise) ✔️ (ReadOnly ise)
LocalMachine\Root(ReadOnly) dosyasını açın ✔️ ✔️ ✔️ ✔️
LocalMachine\Root'ı açın (ReadWrite) ✔️
LocalMachine\Root'ı açın (ExistingOnly) ✔️ ⚠️ ✔️ (ReadOnly ise) ✔️ (ReadOnly ise)

Linux'ta depo, LocalMachine\Root OpenSSL için varsayılan yolda CA paketinin bir yorumudur.

macOS'ta depo, CurrentUser\Root kullanıcı güveni etki alanı için sonuçların yorumlanmasıdır SecTrustSettings . Mağaza LocalMachine\Root , yönetici ve sistem güven etki alanları için sonuçların yorumlanmasıdır SecTrustSettings .

Ara depo

Senaryo Windows Linux macOS iOS, tvOS, MacCatalyst Android
CurrentUser\Intermediate'ı açma (Salt Okunur) ✔️ ✔️ ✔️
CurrentUser\Intermediate Dosyasını Aç (ReadWrite) ✔️ ✔️
CurrentUser\Intermediate Dosyasını Aç (ExistingOnly) ✔️ ⚠️ ✔️ (ReadOnly ise)
LocalMachine\Intermediate(ReadOnly) dosyasını açın ✔️ ✔️ ✔️
LocalMachine\Intermediate dosyasını açın (ReadWrite) ✔️
LocalMachine\Intermediate'ı aç (ExistingOnly) ✔️ ⚠️ ✔️ (ReadOnly ise)

Linux'ta depo, CurrentUser\Intermediate başarılı X509Chain derlemelerinde Yetkili Bilgileri Erişim kayıtları tarafından ara CA'ları indirirken önbellek olarak kullanılır. Depo LocalMachine\Intermediate , OpenSSL için varsayılan yoldaki CA paketinin bir yorumudur.

macOS'ta CurrentUser\Intermediate mağaza özel mağaza olarak değerlendirilir. Bu depoya eklenen sertifikalar X.509 zincir binasını etkilemez.

İzin Verilmeyen depo

Senaryo Windows Linux macOS iOS, tvOS, MacCatalyst Android
CurrentUser\İzin Verilmeyen 'i Aç (Salt Okunur) ✔️ ⚠️ ✔️ ✔️ ✔️
Open CurrentUser\Disallowed (ReadWrite) ✔️ ⚠️
CurrentUser\İzin Verilmeyeni Aç (ExistingOnly) ✔️ ⚠️ ✔️ (ReadOnly ise) ✔️ (ReadOnly ise) ✔️ (ReadOnly ise)
LocalMachine\Disallowed (ReadOnly) dosyasını açın ✔️ ✔️ ✔️ ✔️
LocalMachine\Disallowed (ReadWrite) dosyasını açın ✔️
LocalMachine\Disallowed (ExistingOnly) öğesini açın ✔️ ✔️ (ReadOnly ise) ✔️ (ReadOnly ise) ✔️ (ReadOnly ise)

Linux'ta mağaza Disallowed zincir oluşturmada kullanılmaz ve içindekileri eklemeye çalışmak bir CryptographicExceptionile sonuçlanır. Zaten edinilmiş içerik varsa mağaza açılırken Disallowed bir CryptographicException oluşturulur.

macOS'ta CurrentUser\Disallowed ve LocalMachine\Disallowed depoları, güveni olarak ayarlanmış Always Denysertifikalar için uygun SecTrust Ayarlar sonuçlarının yorumlarıdır.

Var olmayan depo

Senaryo Windows Linux macOS iOS, tvOS, MacCatalyst Android
Var olmayan depo açma (ExistingOnly)
Mevcut olmayan CurrentUser depounu açma (ReadWrite) ✔️ ✔️ ⚠️
LocalMachine varolmayan depo açma (ReadWrite) ✔️

macOS'ta, X509Store API'siyle özel mağaza oluşturma yalnızca konum için CurrentUser desteklenir. Kullanıcının anahtarlık dizininde (~/Library/Keychains) parolasız yeni bir anahtarlık oluşturur. Parolayla anahtarlık oluşturmak için SecKeychainCreate P/Invoke kullanılabilir. Benzer şekilde, SecKeychainOpen anahtarlıkları farklı konumlarda açmak için de kullanılabilir. IntPtr Sonuç, geçerli kullanıcının izinlerine new X509Store(IntPtr) bağlı olarak okuma/yazma özellikli bir depo elde etmek için öğesine geçirilebilir.

X509Chain

macOS Çevrimdışı CRL kullanımını X509RevocationMode.Offline desteklemediğinden olarak X509RevocationMode.Onlinedeğerlendirilir.

macOS, CRL (Sertifika İptal Listesi) / OCSP (Çevrimiçi Sertifika Durum Protokolü) / AIA (Yetkili Bilgileri Erişimi) indirme işlemi için kullanıcı tarafından başlatılan zaman aşımını desteklemez, bu nedenle X509ChainPolicy.UrlRetrievalTimeout yoksayılır.

Ek kaynaklar