Pelatihan
Modul
Menerapkan dan mengelola Active Directory Certificate Services - Training
Menerapkan dan mengelola Active Directory Certificate Services
Browser ini sudah tidak didukung.
Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.
Operasi kriptografi di .NET dilakukan oleh pustaka sistem operasi (OS). Dependensi ini memiliki keuntungan:
Dependensi pada pustaka OS juga berarti bahwa aplikasi .NET hanya dapat menggunakan fitur kriptografi yang didukung OS. Meskipun semua platform mendukung fitur inti tertentu, beberapa fitur yang didukung .NET tidak dapat digunakan pada beberapa platform. Artikel ini mengidentifikasi fitur yang didukung di setiap platform.
Artikel ini mengasumsikan Anda suka terbiasa bekerja dengan kriptografi di .NET. Untuk informasi lebih lanjut, lihat Model Kriptografi .NET dan Layanan Kriptografi .NET.
Semua algoritma hash dan kelas autentikasi pesan berbasis hash (HMAC), termasuk *Managed
kelas, tangguhkan ke pustaka OS dengan pengecualian .NET pada WASM Browser. Di Browser WASM, SHA-1, SHA-2-256, SHA-2-384, SHA-2-512 dan setara HMAC diimplementasikan menggunakan kode terkelola.
Algoritma | Windows | Linux | macOS | iOS, tvOS, MacCatalyst | Android | Browser |
---|---|---|---|---|---|---|
MD5 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
SHA-1 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
SHA-2-256 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
SHA-2-384 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
SHA-2-512 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
SHA-3-256 | Windows 11 Build 25324+ | OpenSSL 1.1.1+ | ❌ | ❌ | ❌ | ❌ |
SHA-3-384 | Windows 11 Build 25324+ | OpenSSL 1.1.1+ | ❌ | ❌ | ❌ | ❌ |
SHA-3-512 | Windows 11 Build 25324+ | OpenSSL 1.1.1+ | ❌ | ❌ | ❌ | ❌ |
SHAKE-128 | Windows 11 Build 25324+ | OpenSSL 1.1.1+2 | ❌ | ❌ | ❌ | ❌ |
SHAKE-256 | Windows 11 Build 25324+ | OpenSSL 1.1.1+2 | ❌ | ❌ | ❌ | ❌ |
HMAC-MD5 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
HMAC-SHA-1 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
HMAC-SHA-2-256 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
HMAC-SHA-2-384 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
HMAC-SHA-2-512 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
HMAC-SHA-3-256 | Windows 11 Build 25324+ | OpenSSL 1.1.1+ | ❌ | ❌ | ❌ | ❌ |
HMAC-SHA-3-384 | Windows 11 Build 25324+ | OpenSSL 1.1.1+ | ❌ | ❌ | ❌ | ❌ |
HMAC-SHA-3-512 | Windows 11 Build 25324+ | OpenSSL 1.1.1+ | ❌ | ❌ | ❌ | ❌ |
KMAC-1281 | Windows 11 Build 26016+ | OpenSSL 3.0+ | ❌ | ❌ | ❌ | ❌ |
KMAC-2561 | Windows 11 Build 26016+ | OpenSSL 3.0+ | ❌ | ❌ | ❌ | ❌ |
KMAC-XOF-1281 | Windows 11 Build 26016+ | OpenSSL 3.0+ | ❌ | ❌ | ❌ | ❌ |
KMAC-XOF-2561 | Windows 11 Build 26016+ | OpenSSL 3.0+ | ❌ | ❌ | ❌ | ❌ |
1Tersedia mulai dari .NET 9.
2Fungsi output streaming yang dapat diperluas (XOF) tersedia mulai dari .NET 9. Di Linux, ini memerlukan OpenSSL 3.3.
Sandi dan rantai yang mendasarinya dilakukan oleh pustaka sistem.
Cipher + Mode | 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 | ❌ | ❌ | ❌ | ❌ | ❌ |
Dukungan enkripsi terautentikasi (AE) disediakan untuk AES-CCM, AES-GCM, dan ChaCha20Poly1305 melalui System.Security.Cryptography.AesCcmkelas , , System.Security.Cryptography.AesGcmdan System.Security.Cryptography.ChaCha20Poly1305 , masing-masing.
Karena enkripsi terautentikasi memerlukan API platform yang lebih baru untuk mendukung algoritma, dukungan mungkin tidak ada di semua platform. Properti IsSupported
statis pada kelas untuk algoritma dapat digunakan untuk mendeteksi pada runtime jika platform saat ini mendukung algoritma atau tidak.
Cipher + Mode | Windows | Linux | macOS | iOS, tvOS, MacCatalyst | Android | Browser |
---|---|---|---|---|---|---|
AES-GCM | ✔️ | ✔️ | ✔️ | ⚠️ | ✔️ | ❌ |
AES-CCM | ✔️ | ✔️ | ⚠️ | ❌ | ✔️ | ❌ |
ChaCha20Poly1305 | Windows 10 Build 20142+ | OpenSSL 1.1.0+ | ✔️ | ⚠️ | API Level 28+ | ❌ |
Di macOS, pustaka sistem tidak mendukung AES-CCM untuk kode pihak ketiga, sehingga AesCcm kelas menggunakan OpenSSL untuk dukungan. Pengguna di macOS perlu mendapatkan salinan OpenSSL (libcrypto) yang sesuai agar jenis ini berfungsi, dan harus berada di jalur tempat sistem akan memuat pustaka secara default. Sebaiknya instal OpenSSL dari manajer paket seperti Homebrew.
Pustaka libcrypto.0.9.7.dylib
dan libcrypto.0.9.8.dylib
yang disertakan dalam macOS berasal dari versi OpenSSL yang lebih lama dan tidak akan digunakan. Pustaka libcrypto.35.dylib
, libcrypto.41.dylib
, dan libcrypto.42.dylib
berasal dari LibreSSL dan tidak akan digunakan.
Dukungan untuk AES-GCM dan ChaCha20Poly1305 tersedia mulai dari .NET 9 di iOS dan tvOS 13.0 dan yang lebih baru, dan semua versi MacCatalyst.
Ukuran Kunci
AES-CCM berfungsi dengan kunci 128, 192, dan 256-bit.
Ukuran Nonce
Kelas AesCcm mendukung nonce 56, 64, 72, 80, 88, 96, dan 104-bit (7, 8, 9, 10, 11, 12, dan 13 byte).
Ukuran Tag
Kelas AesCcm mendukung pembuatan atau pemrosesan tag 32, 48, 64, 80, 96, 112, dan 128-bit (4, 8, 10, 12, 14, dan 16-byte).
Ukuran Kunci
AES-GCM berfungsi dengan kunci 128, 192, dan 256-bit.
Ukuran Nonce
Kelas AesGcm hanya mendukung nonces 96-bit (12-byte).
Ukuran Tag Di Windows dan Linux, AesGcm kelas mendukung pembuatan atau pemrosesan tag 96, 104, 112, 120, dan 128-bit (12, 13, 14, 15, dan 16-byte). Pada platform Apple, ukuran tag dibatasi hingga 128-bit (16-byte) karena keterbatasan kerangka kerja CryptoKit.
ChaCha20Poly1305 memiliki ukuran tetap untuk tag kunci, nonce, dan autentikasi. ChaCha20Poly1305 selalu menggunakan kunci 256-bit, nonce 96-bit (12-byte), dan tag 128-bit (16-byte).
Bagian ini mencakup subbagian berikut:
Pembuatan kunci RSA (Rivest–Shamir–Adleman) dilakukan oleh pustaka OS dan tunduk pada batasan ukuran serta karakteristik performanya.
Operasi kunci RSA dilakukan oleh pustaka OS, dan jenis kunci yang dapat dimuat tunduk pada persyaratan OS.
.NET tidak mengekspos operasi RSA "mentah" (tidak diisi).
Dukungan Padding dan hash bervariasi menurut platform:
Mode Pengisi | Windows (CNG) | Linux (OpenSSL) | macOS | iOS, tvOS, MacCatalyst | Android | Windows (CAPI) |
---|---|---|---|---|---|---|
Enkripsi PKCS1 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
OAEP - SHA-1 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
OAEP - SHA-2 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
OAEP - SHA-3 | Windows 11 Build 25324+ | OpenSSL 1.1.1+ | ❌ | ❌ | ❌ | ❌ |
Tanda Tangan PKCS1 (MD5, SHA-1) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Tanda Tangan PKCS1 (SHA-2) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ⚠️1 |
Tanda Tangan PKCS1 (SHA-3) | Windows 11 Build 25324+ | OpenSSL 1.1.1+ | ❌ | ❌ | ❌ | ❌ |
PSS | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
1 Windows CryptoAPI (CAPI) mampu melakukan tanda tangan PKCS1 dengan algoritma SHA-2. Namun, objek RSA individual dapat dimuat dalam penyedia layanan kriptografi (Penyedia Solusi Cloud) yang tidak mendukungnya.
new RSACryptoServiceProvider()
digunakan.new RSACng()
digunakan..NET mengekspos jenis untuk memungkinkan program beroperasi dengan pustaka OS yang digunakan kode kriptografi .NET. Jenis yang terlibat tidak diterjemahkan di antara platform, dan hanya boleh digunakan secara langsung jika perlu.
Jenis | Windows | Linux | macOS | iOS, tvOS, MacCatalyst | Android |
---|---|---|---|---|---|
RSACryptoServiceProvider | ✔️ | ⚠️1 | ⚠️1 | ⚠️1 | ⚠️1 |
RSACng | ✔️ | ❌ | ❌ | ❌ | ❌ |
RSAOpenSsl | ❌ | ✔️ | ⚠️2 | ❌ | ❌ |
1 Pada non-Windows, RSACryptoServiceProvider dapat digunakan untuk kompatibilitas dengan program yang ada. Dalam hal ini, metode apa pun yang memerlukan interop OS, seperti membuka kunci bernama, melemparkan PlatformNotSupportedException.
2 Di macOS, RSAOpenSsl berfungsi jika OpenSSL diinstal dan dylib libcrypto yang sesuai dapat ditemukan melalui pemuatan pustaka dinamis. Jika pustaka yang sesuai tidak dapat ditemukan, pengecualian akan dilemparkan.
Pembuatan kunci ECDSA (Elliptic Curve Digital Signature Algorithm) dilakukan oleh pustaka OS dan tunduk pada batasan ukuran serta karakteristik performanya.
Kurva kunci ECDSA ditentukan oleh pustaka OS dan tunduk pada batasannya.
Kurva Elips | Windows 10 | Windows 7 - 8.1 | Linux | macOS | iOS, tvOS, MacCatalyst | Android |
---|---|---|---|---|---|---|
NIST P-256 (secp256r1) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
NIST P-384 (secp384r1) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
NIST P-521 (secp521r1) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Kurva brainpool (seperti kurva bernama) | ✔️ | ❌ | ⚠️1 | ❌ | ❌ | ⚠️ 4 |
Kurva bernama lainnya | ⚠️2 | ❌ | ⚠️1 | ❌ | ❌ | ⚠️ 4 |
Kurva eksplisit | ✔️ | ❌ | ✔️ | ❌ | ❌ | ✔️ |
Ekspor atau impor sebagai eksplisit | ✔️ | ❌3 | ✔️ | ❌3 | ❌3 | ✔️ |
1 Distribusi Linux tidak semuanya memiliki dukungan untuk kurva bernama yang sama.
2 Dukungan untuk kurva bernama ditambahkan ke Windows CNG di Windows 10. Untuk informasi lebih lanjut, lihat CNG Bernama Kurva Elips. Kurva bernama tidak tersedia di versi Windows sebelumnya, kecuali untuk tiga kurva di Windows 7.
3 Mengekspor dengan parameter kurva eksplisit memerlukan dukungan pustaka OS, yang tidak tersedia di platform Apple atau versi Windows yang lebih lama.
4 Dukungan Android untuk beberapa kurva tergantung pada versi Android. Distributor Android juga dapat memilih untuk menambahkan atau menghapus kurva dari build Android mereka.
.NET mengekspos jenis untuk memungkinkan program beroperasi dengan pustaka OS yang digunakan kode kriptografi .NET. Jenis yang terlibat tidak diterjemahkan di antara platform, dan hanya boleh digunakan secara langsung jika perlu.
Jenis | Windows | Linux | macOS | iOS, tvOS, MacCatalyst | Android |
---|---|---|---|---|---|
ECDsaCng | ✔️ | ❌ | ❌ | ❌ | ❌ |
ECDsaOpenSsl | ❌ | ✔️ | ⚠️* | ❌ | ❌ |
* Di macOS, ECDsaOpenSsl berfungsi jika OpenSSL diinstal di sistem dan libcrypto dylib yang sesuai dapat ditemukan melalui pemuatan pustaka dinamis. Jika pustaka yang sesuai tidak dapat ditemukan, pengecualian akan dilemparkan.
Pembuatan kunci ECDH (Elliptic Curve Diffie-Hellman) dilakukan oleh pustaka OS dan tunduk pada batasan ukuran serta karakteristik performanya.
Kelas ini ECDiffieHellman mendukung nilai "mentah" dari komputasi ECDH serta melalui fungsi derivasi utama berikut:
Kurva kunci ECDSA ditentukan oleh pustaka OS dan tunduk pada batasannya.
Kurva Elips | Windows 10 | Windows 7 - 8.1 | Linux | macOS | iOS, tvOS, MacCatalyst | Android |
---|---|---|---|---|---|---|
NIST P-256 (secp256r1) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
NIST P-384 (secp384r1) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
NIST P-521 (secp521r1) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Kurva brainpool (seperti kurva bernama) | ✔️ | ❌ | ⚠️1 | ❌ | ❌ | ⚠️ 4 |
Kurva bernama lainnya | ⚠️2 | ❌ | ⚠️1 | ❌ | ❌ | ⚠️ 4 |
Kurva eksplisit | ✔️ | ❌ | ✔️ | ❌ | ❌ | ✔️ |
Ekspor atau impor sebagai eksplisit | ✔️ | ❌3 | ✔️ | ❌3 | ❌3 | ✔️ |
1 Distribusi Linux tidak semuanya memiliki dukungan untuk kurva bernama yang sama.
2 Dukungan untuk kurva bernama ditambahkan ke Windows CNG di Windows 10. Untuk informasi lebih lanjut, lihat CNG Bernama Kurva Elips. Kurva bernama tidak tersedia di versi Windows sebelumnya, kecuali untuk tiga kurva di Windows 7.
3 Mengekspor dengan parameter kurva eksplisit memerlukan dukungan pustaka OS, yang tidak tersedia di platform Apple atau versi Windows yang lebih lama.
4 Dukungan Android untuk beberapa kurva tergantung pada versi Android. Distributor Android juga dapat memilih untuk menambahkan atau menghapus kurva dari build Android mereka.
.NET memperlihatkan jenis untuk memungkinkan program beroperasi dengan pustaka OS yang menggunakan .NET. Jenis yang terlibat tidak diterjemahkan di antara platform, dan hanya boleh digunakan secara langsung jika perlu.
Jenis | Windows | Linux | macOS | iOS, tvOS, MacCatalyst | Android |
---|---|---|---|---|---|
ECDiffieHellmanCng | ✔️ | ❌ | ❌ | ❌ | ❌ |
ECDiffieHellmanOpenSsl | ❌ | ✔️ | ⚠️* | ❌ | ❌ |
* Di macOS, ECDiffieHellmanOpenSsl berfungsi jika OpenSSL diinstal dan libcrypto dylib yang sesuai dapat ditemukan melalui pemuatan pustaka dinamis. Jika pustaka yang sesuai tidak dapat ditemukan, pengecualian akan dilemparkan.
Pembuatan kunci DSA (Algoritma Tanda Tangan Digital) dilakukan oleh pustaka sistem dan tunduk pada batasan ukuran serta karakteristik performanya.
Fungsi | Windows CNG | Linux | macOS | Windows CAPI | iOS, tvOS, MacCatalyst | Android |
---|---|---|---|---|---|---|
Pembuatan kunci (<= 1024 bits) | ✔️ | ✔️ | ❌ | ✔️ | ❌ | ✔️ |
Pembuatan kunci (> 1024 bits) | ✔️ | ✔️ | ❌ | ❌ | ❌ | ✔️ |
Memuat kunci (<= 1024 bit) | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
Memuat kunci (> 1024 bits) | ✔️ | ✔️ | ⚠️* | ❌ | ❌ | ✔️ |
FIPS 186-2 | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
FIPS 186-3 (tanda tangan SHA-2) | ✔️ | ✔️ | ❌ | ❌ | ❌ | ✔️ |
* macOS memuat kunci DSA lebih besar dari 1024 bit, tetapi perilaku kunci tersebut tidak terdefinisi. Kunci tersebut tidak berperilaku sesuai FIPS 186-3.
new DSACryptoServiceProvider()
digunakan.new DSACng()
digunakan..NET mengekspos jenis untuk memungkinkan program beroperasi dengan pustaka OS yang digunakan kode kriptografi .NET. Jenis yang terlibat tidak diterjemahkan di antara platform, dan hanya boleh digunakan secara langsung jika perlu.
Jenis | Windows | Linux | macOS | iOS, tvOS, MacCatalyst | Android |
---|---|---|---|---|---|
DSACryptoServiceProvider | ✔️ | ⚠️1 | ⚠️1 | ❌ | ⚠️1 |
DSACng | ✔️ | ❌ | ❌ | ❌ | ❌ |
DSAOpenSsl | ❌ | ✔️ | ⚠️2 | ❌ | ❌ |
1 Pada non-Windows, DSACryptoServiceProvider dapat digunakan untuk kompatibilitas dengan program yang ada. Dalam hal ini, metode apa pun yang memerlukan interop sistem, seperti membuka kunci bernama, melemparkan PlatformNotSupportedException.
2 Di macOS, DSAOpenSsl berfungsi jika OpenSSL diinstal dan dylib libcrypto yang sesuai dapat ditemukan melalui pemuatan pustaka dinamis. Jika pustaka yang sesuai tidak dapat ditemukan, pengecualian akan dilemparkan.
Sebagian besar dukungan untuk sertifikat X.509 di .NET berasal dari pustaka OS. Untuk memuat sertifikat ke dalam instans X509Certificate2 atau X509Certificate di .NET, sertifikat harus dimuat oleh pustaka OS yang mendasarinya.
Skenario | Windows | Linux | macOS | iOS, tvOS, MacCatalyst | Android |
---|---|---|---|---|---|
Kosong | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Satu sertifikat, tidak ada kunci privat | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Satu sertifikat, dengan kunci privat | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Beberapa sertifikat, tidak ada kunci privat | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Beberapa sertifikat, satu kunci privat | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Beberapa sertifikat, beberapa kunci privat | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Skenario | Windows | Linux | macOS | iOS, tvOS, MacCatalyst | Android |
---|---|---|---|---|---|
Kosong | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Satu sertifikat, tidak ada kunci privat | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Satu sertifikat, dengan kunci privat | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Beberapa sertifikat, tidak ada kunci privat | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Beberapa sertifikat, satu kunci privat | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Beberapa sertifikat, beberapa kunci privat | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Pemuatan ephemeral | ✔️ | ✔️ | ❌ | ✔️ | ✔️ |
macOS tidak dapat memuat kunci privat sertifikat tanpa objek rantai kunci, yang memerlukan penulisan ke disk. Rantai kunci dibuat secara otomatis untuk pemuatan PFX, dan dihapus saat tidak lagi digunakan. Karena opsi X509KeyStorageFlags.EphemeralKeySet berarti bahwa kunci privat tidak boleh ditulis ke disk, menegaskan bahwa tanda di macOS menghasilkan PlatformNotSupportedException.
Windows dan Linux memancarkan blob PKCS7 yang dikodekan DER. macOS memancarkan blob PKCS7 yang dikodekan indefinite-length-CER.
Pada Windows, kelas X509Store adalah representasi dari WINDOWS Certificate Store API. API tersebut berfungsi sama di .NET Core dan .NET 5 seperti yang dilakukan di .NET Framework.
Di non-Windows, X509Store kelas adalah proyeksi keputusan kepercayaan sistem (baca-saja), keputusan kepercayaan pengguna (baca-tulis), dan penyimpanan kunci pengguna (baca-tulis).
Tabel berikut menunjukkan skenario mana yang didukung di setiap platform. Untuk skenario yang tidak didukung (❌ dalam tabel), CryptographicException dilemparkan.
Skenario | Windows | Linux | macOS | iOS, tvOS, MacCatalyst | Android |
---|---|---|---|---|---|
Buka CurrentUser\My (ReadOnly) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Buka CurrentUser\My (ReadWrite) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Buka CurrentUser\My (ExistingOnly) | ✔️ | ⚠️ | ✔️ | ✔️ | ✔️ |
Buka LocalMachine\My | ✔️ | ❌ | ✔️ | ✔️ | ✔️ |
Di Linux, penyimpanan dibuat pada tulis pertama, dan tidak ada penyimpanan pengguna secara default, sehingga pembukaan CurrentUser\My
dengan ExistingOnly
mungkin gagal.
Di macOS, penyimpanan CurrentUser\My
adalah rantai kunci default pengguna, yang login.keychain
secara default. Penyimpanan LocalMachine\My
ini adalah System.keychain
.
Skenario | Windows | Linux | macOS | iOS, tvOS, MacCatalyst | Android |
---|---|---|---|---|---|
Buka CurrentUser\Root (ReadOnly) | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
Buka CurrentUser\Root (ReadWrite) | ✔️ | ✔️ | ❌ | ❌ | ❌ |
Buka CurrentUser\Root (ExistingOnly) | ✔️ | ⚠️ | ✔️ (jika ReadOnly) | ❌ | ✔️ (jika ReadOnly) |
Buka LocalMachine\Root (ReadOnly) | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
Buka LocalMachine\Root (ReadWrite) | ✔️ | ❌ | ❌ | ❌ | ❌ |
Buka LocalMachine\Root (ExistingOnly) | ✔️ | ⚠️ | ✔️ (jika ReadOnly) | ❌ | ✔️ (jika ReadOnly) |
Di Linux, penyimpanan LocalMachine\Root
adalah interpretasi bundel CA di jalur default untuk OpenSSL.
Di macOS, penyimpanan CurrentUser\Root
adalah interpretasi hasil SecTrustSettings
untuk domain kepercayaan pengguna. Penyimpanan LocalMachine\Root
adalah interpretasi dari hasil SecTrustSettings
untuk domain admin dan kepercayaan sistem.
Skenario | Windows | Linux | macOS | iOS, tvOS, MacCatalyst | Android |
---|---|---|---|---|---|
Buka CurrentUser\Intermediate (ReadOnly) | ✔️ | ✔️ | ✔️ | ❌ | ❌ |
Buka CurrentUser\Intermediate (ReadWrite) | ✔️ | ✔️ | ❌ | ❌ | ❌ |
Buka CurrentUser\Intermediate (ExistingOnly) | ✔️ | ⚠️ | ✔️ (jika ReadOnly) | ❌ | ❌ |
Buka LocalMachine\Intermediate (ReadOnly) | ✔️ | ✔️ | ✔️ | ❌ | ❌ |
Buka LocalMachine\Intermediate (ReadWrite) | ✔️ | ❌ | ❌ | ❌ | ❌ |
Buka LocalMachine\Intermediate (ExistingOnly) | ✔️ | ⚠️ | ✔️ (jika ReadOnly) | ❌ | ❌ |
Di Linux, penyimpanan CurrentUser\Intermediate
digunakan sebagai cache saat mengunduh CA perantara oleh rekaman Akses Informasi Otoritasnya pada build X509Chain yang berhasil. Penyimpanan LocalMachine\Intermediate
adalah interpretasi bundel CA di jalur default untuk OpenSSL.
Di macOS, toko CurrentUser\Intermediate
diperlakukan sebagai penyimpanan kustom. Sertifikat yang ditambahkan ke penyimpanan ini tidak memengaruhi pembangunan rantai X.509.
Skenario | Windows | Linux | macOS | iOS, tvOS, MacCatalyst | Android |
---|---|---|---|---|---|
Buka CurrentUser\Disallowed (ReadOnly) | ✔️ | ⚠️ | ✔️ | ✔️ | ✔️ |
Buka CurrentUser\Disallowed (ReadWrite) | ✔️ | ⚠️ | ❌ | ❌ | ❌ |
Buka CurrentUser\Disallowed (ExistingOnly) | ✔️ | ⚠️ | ✔️ (jika ReadOnly) | ✔️ (jika ReadOnly) | ✔️ (jika ReadOnly) |
Buka LocalMachine\Disallowed (ReadOnly) | ✔️ | ❌ | ✔️ | ✔️ | ✔️ |
Buka LocalMachine\Disallowed (ReadWrite) | ✔️ | ❌ | ❌ | ❌ | ❌ |
Buka LocalMachine\Disallowed (ExistingOnly) | ✔️ | ❌ | ✔️ (jika ReadOnly) | ✔️ (jika ReadOnly) | ✔️ (jika ReadOnly) |
Di Linux, penyimpanan Disallowed
tidak digunakan dalam pembuatan rantai, dan mencoba menambahkan konten ke dalamnya menghasilkan CryptographicException. CryptographicException dilemparkan saat membuka penyimpanan Disallowed
jika telah memperoleh konten.
Di macOS, penyimpanan CurrentUser\Disallowed dan LocalMachine\Disallowed adalah interpretasi dari hasil SecTrustSettings yang sesuai untuk sertifikat yang kepercayaannya diatur ke Always Deny
.
Skenario | Windows | Linux | macOS | iOS, tvOS, MacCatalyst | Android |
---|---|---|---|---|---|
Buka penyimpanan yang tidak ada (ExistingOnly) | ❌ | ❌ | ❌ | ❌ | ❌ |
Buka penyimpanan yang tidak ada CurrentUser (ReadWrite) | ✔️ | ✔️ | ⚠️ | ❌ | ❌ |
Buka penyimpanan yang tidak ada LocalMachine (ReadWrite) | ✔️ | ❌ | ❌ | ❌ | ❌ |
Di macOS, pembuatan penyimpanan kustom dengan X509Store API hanya didukung untuk lokasi CurrentUser
. Ini akan membuat rantai kunci baru tanpa kata sandi di direktori rantai kunci pengguna (~/Library/Keychains). Untuk membuat rantai kunci dengan kata sandi, P/Invoke ke SecKeychainCreate
dapat digunakan. Demikian pula, SecKeychainOpen
dapat digunakan untuk membuka rantai kunci di lokasi yang berbeda. IntPtr
yang dihasilkan dapat diteruskan ke new X509Store(IntPtr)
untuk mendapatkan penyimpanan berkemampuan baca/tulis, tergantung pada izin pengguna saat ini.
macOS tidak mendukung pemanfaatan CRL Offline, sehingga X509RevocationMode.Offline
diperlakukan sebagai X509RevocationMode.Online
.
macOS tidak mendukung batas waktu yang dimulai pengguna pada pengunduhan CRL (Daftar Pencabutan Sertifikat) / OCSP (Protokol Status Sertifikat Online) / AIA (Akses Informasi Otoritas), jadi X509ChainPolicy.UrlRetrievalTimeout
diabaikan.
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik:
Pelatihan
Modul
Menerapkan dan mengelola Active Directory Certificate Services - Training
Menerapkan dan mengelola Active Directory Certificate Services
Dokumentasi
Tinjau implementasi algoritma kriptografi biasa di .NET. Pelajari model kriptografi pewarisan objek dan satu bidikan.
Gambaran umum enkripsi, tanda tangan digital, dan algoritme hash di .NET - .NET
Pelajari metode dan praktik enkripsi di .NET, termasuk tanda tangan digital, pembuatan angka acak, dan kelas Cryptography Next Generation (CNG).
Membuat Kunci untuk Enkripsi dan Dekripsi - .NET
Memahami cara membuat dan mengelola kunci simetris dan asimetris untuk enkripsi dan dekripsi di .NET.