Megosztás a következőn keresztül:


Platformfüggetlen titkosítás a .NET-ben

A .NET titkosítási műveleteit operációsrendszer-kódtárak végzik. Ennek a függőségnek előnyei vannak:

  • A .NET-alkalmazások kihasználják az operációs rendszer megbízhatóságát. A titkosítási kódtárak biztonsági rések elleni védelme az operációsrendszer-gyártók számára kiemelt fontosságú. Ehhez olyan frissítéseket biztosítanak, amelyeket a rendszergazdáknak alkalmazniuk kell.
  • A .NET-alkalmazások hozzáférhetnek a FIPS által ellenőrzött algoritmusokhoz, ha az operációsrendszer-kódtárak FIPS-ellenőrzéssel rendelkeznek.

Az operációsrendszer-kódtáraktól való függőség azt is jelenti, hogy a .NET-alkalmazások csak az operációs rendszer által támogatott titkosítási funkciókat használhatják. Bár minden platform támogatja bizonyos alapvető funkciókat, egyes .NET által támogatott funkciók egyes platformokon nem használhatók. Ez a cikk az egyes platformokon támogatott funkciókat ismerteti.

Ez a cikk feltételezi, hogy ismeri a .NET titkosítását. További információ: .NET titkosítási modell és .NET titkosítási szolgáltatások.

Kivonat- és üzenethitelesítési algoritmusok

Az összes kivonatalgoritmus és kivonatalapú üzenethitelesítési (HMAC) osztály, beleértve az *Managed osztályokat is, a böngésző WASM-ben futó .NET kivételével halasztja az operációsrendszer-kódtárakat. A WASM böngészőben az SHA-1, az SHA-2-256, az SHA-2-384, az SHA-2-512 és a HMAC megfelelői felügyelt kóddal implementálódnak.

Algoritmus Windows Linux macOS iOS, tvOS, MacCatalyst Android Böngésző
MD5 ✔️ ✔️ ✔️ ✔️ ✔️
SHA-1 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
SHA-2-256 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
SHA-2-384 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
SHA-2-512 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
SHA-3-2561 Windows 11 Build 25324+ OpenSSL 1.1.1+
SHA-3-3841 Windows 11 Build 25324+ OpenSSL 1.1.1+
SHA-3-5121 Windows 11 Build 25324+ OpenSSL 1.1.1+
SHAKE-1281 Windows 11 Build 25324+ OpenSSL 1.1.1+3
SHAKE-2561 Windows 11 Build 25324+ OpenSSL 1.1.1+3
HMAC-MD5 ✔️ ✔️ ✔️ ✔️ ✔️
HMAC-SHA-1 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
HMAC-SHA-2-256 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
HMAC-SHA-2-384 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
HMAC-SHA-2-512 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
HMAC-SHA-3-2561 Windows 11 Build 25324+ OpenSSL 1.1.1+
HMAC-SHA-3-3841 Windows 11 Build 25324+ OpenSSL 1.1.1+
HMAC-SHA-3-5121 Windows 11 Build 25324+ OpenSSL 1.1.1+
KMAC-1282 Windows 11 Build 26016+ OpenSSL 3.0+
KMAC-2562 Windows 11 Build 26016+ OpenSSL 3.0+
KMAC-XOF-1282 Windows 11 Build 26016+ OpenSSL 3.0+
KMAC-XOF-2562 Windows 11 Build 26016+ OpenSSL 3.0+

1A .NET 8-tól kezdve érhető el.

2A .NET 9-től kezdve érhető el.

3A streamelhető bővíthető kimeneti függvény (XOF) a .NET 9-től érhető el. Linuxon ehhez OpenSSL 3.3 szükséges.

Szimmetrikus titkosítás

A mögöttes titkosítást és láncolást a rendszerkódtárak végzik.

Titkosítás + mód Windows Linux macOS iOS, tvOS, MacCatalyst Android
AES-CBC ✔️ ✔️ ✔️ ✔️ ✔️
AES-EKB ✔️ ✔️ ✔️ ✔️ ✔️
AES-CFB8 ✔️ ✔️ ✔️ ✔️ ✔️
AES-CFB128 ✔️ ✔️ ✔️ ✔️ ✔️
3DES-CBC ✔️ ✔️ ✔️ ✔️ ✔️
3DES-EKB ✔️ ✔️ ✔️ ✔️ ✔️
3DES-CFB8 ✔️ ✔️ ✔️ ✔️ ✔️
3DES-CFB64 ✔️ ✔️ ✔️ ✔️ ✔️
DES-CBC ✔️ ✔️ ✔️ ✔️ ✔️
DES-EKB ✔️ ✔️ ✔️ ✔️ ✔️
DES-CFB8 ✔️ ✔️ ✔️ ✔️ ✔️
RC2-CBC ✔️ ✔️ ✔️ ✔️
RC2-EKB ✔️ ✔️ ✔️ ✔️
RC2-CFB

Hitelesített titkosítás

Hitelesített titkosítási (AE) támogatás érhető el az AES-CCM, az AES-GCM és a ChaCha20Poly1305 esetében az , System.Security.Cryptography.AesGcmés System.Security.Cryptography.ChaCha20Poly1305 az System.Security.Cryptography.AesCcmosztályokon keresztül.

Mivel a hitelesített titkosításhoz újabb platform API-k szükségesek az algoritmus támogatásához, előfordulhat, hogy a támogatás nem minden platformon érhető el. Az IsSupported algoritmus osztályainak statikus tulajdonsága futásidőben észlelhető, ha az aktuális platform támogatja az algoritmust.

Titkosítás + mód Windows Linux macOS iOS, tvOS, MacCatalyst Android Böngésző
AES-GCM ✔️ ✔️ ⚠️ ⚠️ ✔️
AES-CCM ✔️ ✔️ ⚠️ ✔️
ChaCha20Poly1305 Windows 10 Build 20142+ OpenSSL 1.1.0+ ⚠️ ⚠️ API Level 28+

AES-CCM macOS rendszeren

MacOS rendszeren a rendszerkódtárak nem támogatják az AES-CCM-et külső kódhoz, ezért az osztály openSSL-t AesCcm használ a támogatáshoz. A macOS-felhasználóknak be kell szereznie az OpenSSL (libcrypto) megfelelő példányát ahhoz, hogy működjön, és olyan elérési úton kell lennie, amelyből a rendszer alapértelmezés szerint betölt egy tárat. Javasoljuk, hogy telepítse az OpenSSL-t egy csomagkezelőből, például a Homebrew-ból.

A libcrypto.0.9.7.dylib macOS-ben található kódtárak az libcrypto.0.9.8.dylib OpenSSL korábbi verzióiból származnak, és nem lesznek használatban. A libcrypto.35.dylib, libcrypto.41.dylibés libcrypto.42.dylib a kódtárak a LibreSSL-ből származnak, és nem lesznek használatban.

AES-GCM és ChaCha20Poly1305 macOS rendszeren

A macOS nem támogatja az AES-GCM-t vagy a ChaCha20Poly1305-öt, amíg a macOS 10.15 nem támogatja a külső kódokat. A .NET 8 előtt, AesGcm és ChaCha20Poly1305 ugyanaz a követelmény, mint az AES-CCM, és a felhasználóknak telepíteniük kell az OpenSSL-t az ilyen típusok működéséhez.

A .NET 8-tól kezdve a .NET macOS rendszeren az Apple CryptoKit keretrendszerét fogja használni az AES-GCM-hez és a ChaCha20Poly1305-höz. A felhasználóknak nem kell további függőségeket telepíteniük vagy konfigurálniuk az AES-GCM-hez vagy a ChaCha20Poly1305-höz macOS rendszeren.

AES-GCM és ChaCha20Poly1305 iOS, tvOS és MacCatalyst rendszeren

Az AES-GCM és a ChaCha20Poly1305 támogatása .NET 9-től kezdve érhető el iOS és tvOS 13.0 és újabb rendszereken, valamint a MacCatalyst összes verziójában.

AES-CCM-kulcsok, nonces és címkék

  • Kulcsméretek

    Az AES-CCM 128, 192 és 256 bites kulcsokkal működik.

  • Nem kötött méretek

    Az AesCcm osztály támogatja az 56, 64, 72, 80, 88, 96 és 104 bites (7, 8, 9, 10, 11, 12 és 13 bájtos) nonceseket.

  • Címkeméretek

    Az AesCcm osztály támogatja a 32, 48, 64, 80, 96, 112 és 128 bites (4, 8, 10, 12, 14 és 16 bájtos) címkék létrehozását vagy feldolgozását.

AES-GCM-kulcsok, nonces és címkék

  • Kulcsméretek

    Az AES-GCM 128, 192 és 256 bites kulcsokkal működik.

  • Nem kötött méretek

    Az AesGcm osztály csak 96 bites (12 bájtos) nonceseket támogat.

  • A Címkeméretek Windowson és Linuxon az AesGcm osztály támogatja a 96, 104, 112, 120 és 128 bites (12, 13, 14, 15 és 16 bájtos) címkék létrehozását vagy feldolgozását. Apple-platformokon a címke mérete a CryptoKit-keretrendszer korlátozásai miatt legfeljebb 128 bites (16 bájtos) lehet.

ChaCha20Poly1305 kulcsok, nonces és címkék.

A ChaCha20Poly1305 rögzített méretű a kulcs, a nonce és a hitelesítési címke számára. A ChaCha20Poly1305 mindig egy 256 bites kulcsot, egy 96 bites (12 bájtos) nonce-t és 128 bites (16 bájtos) címkét használ.

Aszimmetrikus titkosítás

Ez a szakasz a következő alszakaszokat tartalmazza:

RSA

Az RSA (Rivest–Shamir–Adleman) kulcsgenerálást az operációsrendszer-kódtárak végzik, és méretkorlátozásokra és teljesítményjellemzőkre vonatkoznak.

Az RSA-kulcsműveleteket az operációsrendszer-kódtárak hajtják végre, és a betölthető kulcstípusokra az operációs rendszer követelményei vonatkoznak.

A .NET nem teszi elérhetővé a "nyers" (nempadded) RSA-műveleteket.

A kitöltés és a kivonatolás támogatása platformonként eltérő:

Kitöltési mód Windows (CNG) Linux (OpenSSL) macOS iOS, tvOS, MacCatalyst Android Windows (CAPI)
PKCS1 titkosítás ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
OAEP – SHA-1 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
OAEP – SHA-2 ✔️ ✔️ ✔️ ✔️ ✔️
OAEP – SHA-32 Windows 11 Build 25324+ OpenSSL 1.1.1+
PKCS1 Signature (MD5, SHA-1) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
PKCS1-aláírás (SHA-2) ✔️ ✔️ ✔️ ✔️ ✔️ ️ 1
PKCS1 Signature (SHA-3)2 Windows 11 Build 25324+ OpenSSL 1.1.1+
PSS ✔️ ✔️ ✔️ ✔️ ✔️

Az 1 Windows CryptoAPI (CAPI) sha-2 algoritmussal képes PKCS1 aláírásra. Az egyes RSA-objektum azonban betölthető egy olyan titkosítási szolgáltatóba (CSP), amely nem támogatja azt.

2 .NET 8-at igényel.

RSA Windows rendszeren

RSA natív interop

A .NET olyan típusokat tesz elérhetővé, amelyek lehetővé teszik, hogy a programok együttműködjenek a .NET-titkosítási kód által használt operációsrendszer-kódtárakkal. Az érintett típusok nem fordíthatók le a platformok között, és csak akkor használhatók közvetlenül, ha szükséges.

Típus Windows Linux macOS iOS, tvOS, MacCatalyst Android
RSACryptoServiceProvider ✔️ ️ 1 ️ 1 ️ 1 ️ 1
RSACng ✔️
RSAOpenSsl ✔️ ️ 2

1 Nem Windows rendszeren használható a RSACryptoServiceProvider meglévő programokkal való kompatibilitáshoz. Ebben az esetben minden olyan módszer, amely operációsrendszer-interopt igényel, például egy elnevezett kulcs megnyitása, egy PlatformNotSupportedException.

2 MacOS rendszeren az OpenSSL telepítésekor működik, RSAOpenSsl és dinamikus kódtárbetöltéssel megfelelő libcrypto dylib található. Ha nem található megfelelő kódtár, a rendszer kivételeket fog kivenni.

ECDSA

Az ECDSA (Elliptic Curve Digital Signature Algorithm) kulcsgenerálását az operációsrendszer-kódtárak végzik, és méretkorlátozásokra és teljesítményjellemzőkre vonatkoznak.

Az ECDSA-kulcsgörbéket az operációsrendszer-kódtárak határozzák meg, és ezekre korlátozások vonatkoznak.

Elliptikus görbe Windows 10 Windows 7 – 8.1 Linux macOS iOS, tvOS, MacCatalyst Android
NIST P-256 (secp256r1) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
NIST P-384 (secp384r1) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
NIST P-521 (secp521r1) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Agyserkentő görbék (nevesített görbékként) ✔️ ️ 1 ️ 4
Egyéb elnevezett görbék ️ 2 ️ 1 ️ 4
Explicit görbék ✔️ ✔️ ✔️
Exportálás vagy importálás explicit módon ✔️ 3 ✔️ 3 3 ✔️

1 Linux-disztribúció nem mindegyik támogatja ugyanazokat a nevesített görbéket.

2 A nevesített görbék támogatása a Windows CNG-hez lett hozzáadva a Windows 10-ben. További információ: CNG named Elliptic Curves. Az elnevezett görbék a Windows korábbi verzióiban nem érhetők el, kivéve a Windows 7 három görbét.

3 Az explicit görbeparaméterekkel való exportáláshoz operációsrendszer-kódtár-támogatás szükséges, amely nem érhető el az Apple-platformokon vagy a Windows korábbi verzióiban.

4 Egyes görbék Android-támogatása az Android-verziótól függ. Az Android-forgalmazók dönthetnek úgy, hogy az Android-buildből is hozzáadnak vagy eltávolítanak görbéket.

ECDSA natív interop

A .NET olyan típusokat tesz elérhetővé, amelyek lehetővé teszik, hogy a programok együttműködjenek a .NET-titkosítási kód által használt operációsrendszer-kódtárakkal. Az érintett típusok nem fordíthatók le a platformok között, és csak akkor használhatók közvetlenül, ha szükséges.

Típus Windows Linux macOS iOS, tvOS, MacCatalyst Android
ECDsaCng ✔️
ECDsaOpenSsl ✔️ ⚠️*

* MacOS rendszeren működik, ha az OpenSSL telepítve van a rendszerben, ECDsaOpenSsl és egy megfelelő libcrypto dylib található a dinamikus kódtár betöltése révén. Ha nem található megfelelő kódtár, a rendszer kivételeket fog kivenni.

ECDH

Az ECDH (Elliptic Curve Diffie-Hellman) kulcsgenerálását az operációsrendszer-kódtárak végzik, és méretkorlátozásokra és teljesítményjellemzőkre vonatkoznak.

Az ECDiffieHellman osztály támogatja az ECDH-számítások "nyers" értékét, valamint a következő fő származtatási függvényeket:

  • HASH(Z)
  • HASH(prepend || Z || hozzáfűzés)
  • HMAC(kulcs, Z)
  • HMAC(key, prepend || Z || hozzáfűzés)
  • HMAC(Z, Z)
  • HMAC(Z, előpend || Z || hozzáfűzés)
  • Tls11Prf(címke, vetőmag)

A .NET 8-ban bevezettük a "nyers" kulcs származtatását.

Az ECDH-kulcsgörbéket az operációsrendszer-kódtárak határozzák meg, és ezekre korlátozások vonatkoznak.

Elliptikus görbe Windows 10 Windows 7 – 8.1 Linux macOS iOS, tvOS, MacCatalyst Android
NIST P-256 (secp256r1) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
NIST P-384 (secp384r1) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
NIST P-521 (secp521r1) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Agyserkentő görbék (nevesített görbékként) ✔️ ️ 1 ️ 4
Egyéb elnevezett görbék ️ 2 ️ 1 ️ 4
Explicit görbék ✔️ ✔️ ✔️
Exportálás vagy importálás explicit módon ✔️ 3 ✔️ 3 3 ✔️

1 Linux-disztribúció nem mindegyik támogatja ugyanazokat a nevesített görbéket.

2 A nevesített görbék támogatása a Windows CNG-hez lett hozzáadva a Windows 10-ben. További információ: CNG named Elliptic Curves. Az elnevezett görbék a Windows korábbi verzióiban nem érhetők el, kivéve a Windows 7 három görbét.

3 Az explicit görbeparaméterekkel való exportáláshoz operációsrendszer-kódtár-támogatás szükséges, amely nem érhető el az Apple-platformokon vagy a Windows korábbi verzióiban.

4 Egyes görbék Android-támogatása az Android-verziótól függ. Az Android-forgalmazók dönthetnek úgy, hogy az Android-buildből is hozzáadnak vagy eltávolítanak görbéket.

ECDH natív interop

A .NET olyan típusokat tesz elérhetővé, amelyek lehetővé teszik, hogy a programok együttműködjenek a .NET által használt operációsrendszer-kódtárakkal. Az érintett típusok nem fordíthatók le a platformok között, és csak akkor használhatók közvetlenül, ha szükséges.

Típus Windows Linux macOS iOS, tvOS, MacCatalyst Android
ECDiffieHellmanCng ✔️
ECDiffieHellmanOpenSsl ✔️ ⚠️*

* MacOS rendszeren az OpenSSL telepítésekor működik, ECDiffieHellmanOpenSsl és dinamikus kódtárbetöltéssel megfelelő libcrypto dylib található. Ha nem található megfelelő kódtár, a rendszer kivételeket fog kivenni.

DSA

A DSA (digitális aláírási algoritmus) kulcsgenerálását a rendszerkódtárak végzik, és méretkorlátozásaikra és teljesítményjellemzőikre vonatkoznak.

Függvény Windows CNG Linux macOS Windows CAPI iOS, tvOS, MacCatalyst Android
Kulcs létrehozása (<= 1024 bit) ✔️ ✔️ ✔️ ✔️
Kulcslétrehozás (> 1024 bit) ✔️ ✔️ ✔️
Kulcsok betöltése (<= 1024 bit) ✔️ ✔️ ✔️ ✔️ ✔️
Kulcsok betöltése (> 1024 bit) ✔️ ✔️ ⚠️* ✔️
FIPS 186-2 ✔️ ✔️ ✔️ ✔️ ✔️
FIPS 186-3 (SHA-2 aláírások) ✔️ ✔️ ✔️

* a macOS 1024 bitesnél nagyobb DSA-kulcsokat tölt be, de ezeknek a kulcsoknak a viselkedése nincs meghatározva. Nem a FIPS 186-3 szerint viselkednek.

DSA Windows rendszeren

Natív DSA-interop

A .NET olyan típusokat tesz elérhetővé, amelyek lehetővé teszik, hogy a programok együttműködjenek a .NET-titkosítási kód által használt operációsrendszer-kódtárakkal. Az érintett típusok nem fordíthatók le a platformok között, és csak akkor használhatók közvetlenül, ha szükséges.

Típus Windows Linux macOS iOS, tvOS, MacCatalyst Android
DSACryptoServiceProvider ✔️ ️ 1 ️ 1 ️ 1
DSACng ✔️
DSAOpenSsl ✔️ ️ 2

1 Nem Windows rendszeren használható a DSACryptoServiceProvider meglévő programokkal való kompatibilitáshoz. Ebben az esetben minden olyan módszer, amely rendszerközi beavatkozást igényel, például egy elnevezett kulcs megnyitását, egy PlatformNotSupportedException.

2 MacOS rendszeren az OpenSSL telepítésekor működik, DSAOpenSsl és dinamikus kódtárbetöltéssel megfelelő libcrypto dylib található. Ha nem található megfelelő kódtár, a rendszer kivételeket fog kivenni.

X.509-tanúsítványok

A .NET-ben az X.509-tanúsítványok támogatásának többsége operációsrendszer-kódtárakból származik. Ha egy tanúsítványt egy .NET-példányba vagy X509Certificate -X509Certificate2példányba szeretne betölteni, a tanúsítványt a mögöttes operációsrendszer-kódtárnak kell betöltenie.

PKCS12/PFX olvasása

Eset Windows Linux macOS iOS, tvOS, MacCatalyst Android
Üres ✔️ ✔️ ✔️ ✔️ ✔️
Egy tanúsítvány, titkos kulcs nélkül ✔️ ✔️ ✔️ ✔️ ✔️
Egy tanúsítvány, titkos kulccsal ✔️ ✔️ ✔️ ✔️ ✔️
Több tanúsítvány, titkos kulcsok nélkül ✔️ ✔️ ✔️ ✔️ ✔️
Több tanúsítvány, egy titkos kulcs ✔️ ✔️ ✔️ ✔️ ✔️
Több tanúsítvány, több titkos kulcs ✔️ ✔️ ✔️ ✔️ ✔️

PKCS12/PFX írása

Eset Windows Linux macOS iOS, tvOS, MacCatalyst Android
Üres ✔️ ✔️ ✔️ ✔️ ✔️
Egy tanúsítvány, titkos kulcs nélkül ✔️ ✔️ ✔️ ✔️ ✔️
Egy tanúsítvány, titkos kulccsal ✔️ ✔️ ✔️ ✔️ ✔️
Több tanúsítvány, titkos kulcsok nélkül ✔️ ✔️ ✔️ ✔️ ✔️
Több tanúsítvány, egy titkos kulcs ✔️ ✔️ ✔️ ✔️ ✔️
Több tanúsítvány, több titkos kulcs ✔️ ✔️ ✔️ ✔️ ✔️
Rövid élettartamú betöltés ✔️ ✔️ ✔️ ✔️

A macOS nem tudja betölteni a tanúsítvány titkos kulcsait kulcskarika-objektum nélkül, ami lemezre írást igényel. A rendszer automatikusan létrehozza a kulcsláncokat a PFX betöltéséhez, és a rendszer törli őket, ha már nincs használatban. Mivel a X509KeyStorageFlags.EphemeralKeySet beállítás azt jelenti, hogy a titkos kulcsot nem szabad lemezre írni, a jelölő macOS rendszeren való érvényesítése egy PlatformNotSupportedException.

PKCS7-tanúsítványgyűjtemény írása

A Windows és a Linux egyaránt DER-kódolású PKCS7-blobokat bocsát ki. a macOS meghatározatlan hosszúságú-CER-kódolású PKCS7-blobokat bocsát ki.

X509Store

Windows rendszeren az X509Store osztály a Windows Tanúsítványtár API-k reprezentációja. Ezek az API-k ugyanúgy működnek a .NET Core-ban és a .NET 5-ben, mint a .NET-keretrendszer.

Nem Windows rendszeren az osztály a X509Store rendszermegbízhatósági döntések (írásvédett), a felhasználói megbízhatósági döntések (írás-olvasás) és a felhasználói kulcstár (olvasás-írás) előrejelzése.

Az alábbi táblázatok azt mutatják be, hogy mely forgatókönyvek támogatottak az egyes platformokon. A nem támogatott forgatókönyvek esetén (❌ a táblákban) a rendszer egy CryptographicException értéket ad ki.

A Saját áruház

Eset Windows Linux macOS iOS, tvOS, MacCatalyst Android
CurrentUser\My (ReadOnly) megnyitása ✔️ ✔️ ✔️ ✔️ ✔️
CurrentUser\My (ReadWrite) megnyitása ✔️ ✔️ ✔️ ✔️ ✔️
Open CurrentUser\My (ExistingOnly) ✔️ ⚠️ ✔️ ✔️ ✔️
LocalMachine\My megnyitása ✔️ ✔️ ✔️ ✔️

Linuxon az áruházak első íráskor jönnek létre, és alapértelmezés szerint nem léteznek felhasználói tárolók, ezért előfordulhat, hogy a megnyitás CurrentUser\My ExistingOnly sikertelen lesz.

MacOS rendszeren az CurrentUser\My áruház a felhasználó alapértelmezett kulcslánca, amely alapértelmezés szerint.login.keychain Az LocalMachine\My üzlet .System.keychain

A gyökértároló

Eset Windows Linux macOS iOS, tvOS, MacCatalyst Android
CurrentUser\Root megnyitása (ReadOnly) ✔️ ✔️ ✔️ ✔️
CurrentUser\Root (ReadWrite) megnyitása ✔️ ✔️
Open CurrentUser\Root (ExistingOnly) ✔️ ⚠️ ✔️ (ha readOnly) ✔️ (ha readOnly)
A LocalMachine\Root megnyitása (ReadOnly) ✔️ ✔️ ✔️ ✔️
A LocalMachine\Root (ReadWrite) megnyitása ✔️
Open LocalMachine\Root (ExistingOnly) ✔️ ⚠️ ✔️ (ha readOnly) ✔️ (ha readOnly)

Linuxon az LocalMachine\Root áruház a CA-csomag értelmezése az OpenSSL alapértelmezett elérési útján.

MacOS rendszeren az CurrentUser\Root áruház a felhasználói megbízhatósági SecTrustSettings tartomány eredményeinek értelmezése. Az LocalMachine\Root áruház a rendszergazdai és a rendszermegbízhatósági SecTrustSettings tartományok eredményeinek értelmezése.

A köztes tároló

Eset Windows Linux macOS iOS, tvOS, MacCatalyst Android
Open CurrentUser\Intermediate (ReadOnly) ✔️ ✔️ ✔️
Open CurrentUser\Intermediate (ReadWrite) ✔️ ✔️
Open CurrentUser\Intermediate (ExistingOnly) ✔️ ⚠️ ✔️ (ha readOnly)
Open LocalMachine\Intermediate (ReadOnly) ✔️ ✔️ ✔️
LocalMachine\Intermediate (ReadWrite) megnyitása ✔️
Open LocalMachine\Intermediate (ExistingOnly) ✔️ ⚠️ ✔️ (ha readOnly)

Linuxon az CurrentUser\Intermediate áruház gyorsítótárként használatos, amikor a szolgáltatói információelérési rekordjaik letöltik a köztes hitelesítésszolgáltatókat a sikeres X509Chain-buildeken. Az LocalMachine\Intermediate áruház a CA-csomag értelmezése az OpenSSL alapértelmezett elérési útján.

MacOS rendszeren az CurrentUser\Intermediate áruház egyéni tárolóként lesz kezelve. Az áruházhoz hozzáadott tanúsítványok nem befolyásolják az X.509-láncépítést.

A nem engedélyezett tároló

Eset Windows Linux macOS iOS, tvOS, MacCatalyst Android
Open CurrentUser\Disallowed (ReadOnly) ✔️ ⚠️ ✔️ ✔️ ✔️
Open CurrentUser\Disallowed (ReadWrite) ✔️ ⚠️
Open CurrentUser\Disallowed (ExistingOnly) ✔️ ⚠️ ✔️ (ha readOnly) ✔️ (ha readOnly) ✔️ (ha readOnly)
Open LocalMachine\Disallowed (ReadOnly) ✔️ ✔️ ✔️ ✔️
Open LocalMachine\Disallowed (ReadWrite) ✔️
Open LocalMachine\Disallowed (ExistingOnly) ✔️ ✔️ (ha readOnly) ✔️ (ha readOnly) ✔️ (ha readOnly)

Linuxon az áruház nem használatos a Disallowed láncépítésben, és a tartalom hozzáadásának megkísérlése egy CryptographicException. Az A CryptographicException a tároló megnyitásakor Disallowed jön létre, ha már rendelkezik tartalommal.

MacOS rendszeren a CurrentUser\Letiltott és a LocalMachine\Letiltott tárolók a megfelelő SecTrustSettings-eredményeket értelmezik azokhoz a tanúsítványokhoz, amelyek megbízhatósága a következőre Always Denyvan állítva.

Nem létező tároló

Eset Windows Linux macOS iOS, tvOS, MacCatalyst Android
Nem létező tároló megnyitása (ExistingOnly)
A CurrentUser nem létező tároló megnyitása (ReadWrite) ✔️ ✔️ ⚠️
A LocalMachine nem létező tároló megnyitása (ReadWrite) ✔️

MacOS rendszeren az egyéni tároló létrehozása az X509Store API-val csak a helyhez CurrentUser támogatott. Új kulcskarikát hoz létre jelszó nélkül a felhasználó kulcskarikakönyvtárában (~/Library/Keychains). Jelszóval rendelkező kulcskarika létrehozásához használhat egy P/Invoke parancsot SecKeychainCreate . Hasonlóképpen használható SecKeychainOpen a kulcskarikák különböző helyeken való megnyitására is. Az eredményül kapott IntPtr adatok átadhatók egy olvasási/írási képességű tároló beszerzéséhez new X509Store(IntPtr) , az aktuális felhasználó engedélyeinek függvényében.

X509Chain

a macOS nem támogatja az offline CRL-kihasználtságot, ezért X509RevocationMode.Offline a rendszer a X509RevocationMode.Onlinekövetkezőképpen kezeli: .

A macOS nem támogatja a felhasználó által kezdeményezett időtúllépést a CRL (tanúsítvány-visszavonási lista) / OCSP (Online tanúsítványállapot-protokoll) / AIA (Authority Information Access) letöltésén, ezért X509ChainPolicy.UrlRetrievalTimeout a rendszer figyelmen kívül hagyja.

További erőforrások