Bagikan melalui


Mengelola Status Penyimpanan Sertifikat

Beberapa fungsi menyediakan layanan untuk mengelola statuspenyimpanan sertifikat.

Untuk mendapatkan akses ke sertifikat, penyimpanan sertifikat tempat sertifikat disimpan harus dibuka melalui panggilan ke CertOpenStore atau CertOpenSystemStore.

Biasanya penyimpanan sertifikat dibuka dalam memori yang di-cache. Ini bisa menjadi penyimpanan baru atau kontennya dapat dimuat dari registri lokal, registri pada komputer jarak jauh, file disk, pesan PKCS #7, atau beberapa sumber lainnya.

Fungsi penyimpanan sertifikat CryptoAPI juga memungkinkan penyimpanan untuk mempertahankan sertifikat di luar memori yang di-cache, misalnya, database eksternal sertifikat seperti yang disediakan oleh Database Server Sertifikat Microsoft.

Salah satu parameter fungsi CertOpenStore , lpszStoreProvider, menentukan jenis toko yang dibuka dan penyedia yang digunakan untuk membuka penyimpanan tersebut. Untuk contoh membuka penyimpanan sertifikat menggunakan berbagai penyedia, lihat Contoh Kode C untuk Membuka Penyimpanan Sertifikat.

CertCloseStore menutup penyimpanan sertifikat. Saat penyimpanan sertifikat ditutup, masing-masing konteks sertifikat di penyimpanan tersebut memiliki jumlah referensinya berkurang satu. Memori dikosongkan untuk sertifikat yang jumlah referensinya menjadi nol.

Mengatur CERT_CLOSE_STORE_FORCE_FLAG dengan CertCloseStore menutup penyimpanan sertifikat dan membebaskan memori untuk semua konteks sertifikatnya terlepas dari jumlah referensinya. Dalam beberapa kasus, seperti dalam program multithreaded, ini tidak dapat diinginkan. Jika CERT_CLOSE_STORE_CHECK_FLAG diatur, penyimpanan ditutup, tetapi nilai peringatan dikembalikan oleh fungsi jika memori masih dialokasikan untuk sertifikat yang jumlah referensinya belum dikurangi menjadi nol. Jika jumlah referensi sertifikat lebih besar dari nol, duplikat konteks sertifikat tersebut belum dibebaskan. Gunakan CertFreeCertificateContext, CertFreeCRLContext, dan CertFreeCTLContext untuk membebaskan sertifikat apa pun yang dibiarkan terbuka.

Catatan

Konteks sertifikat adalah struktur jenis CERT_CONTEXT yang memiliki, di antara anggota lain, penunjuk ke BLOB sertifikat yang dikodekan dan penunjuk ke struktur CERT_INFO. Struktur CERT_INFO berisi data sertifikat yang paling signifikan. Untuk informasi selengkapnya tentang sertifikat, daftar pencabutan sertifikat (CRL), dan struktur konteks daftar kepercayaan sertifikat (CTL), lihat Pengodean dan Pendekodean Konteks Sertifikat.

Setiap konteks sertifikat juga berisi jumlah referensi yang menunjukkan jumlah salinan alamat konteks yang telah ditetapkan. Setiap kali konteks sertifikat diduplikasi dengan cara apa pun, jumlah referensinya bertambah satu per satu. Setiap kali penunjuk ke konteks sertifikat dikosongkan, jumlah referensi dalam konteks sertifikat dikurangi oleh satu. Ketika jumlah referensi pada konteks sertifikat mencapai nol, memori yang menyimpan konteks tidak dialokasikan. Memori yang dialokasikan untuk konteks sertifikat juga tidak dialokasikan ketika konteks tersebut berada di penyimpanan dan penyimpanan ditutup menggunakan CERT_CLOSE_STORE_FORCE_FLAG. Jika memori untuk konteks tidak dialokasikan dan penunjuk ke konteks tersebut masih digunakan, pointer tersebut tidak lagi valid.

 

CertDuplicateStore meningkatkan jumlah referensi di penyimpanan.

CertSaveStore menyimpan konten penyimpanan ke file disk atau lokasi memori, dan

CertControlStore mengelola toko saat dibuka. Aplikasi dengan penyimpanan terbuka dapat diberi tahu ketika status penyimpanan yang bertahan telah berubah oleh beberapa proses lain. Ini bisa terjadi jika sertifikat baru disalin ke penyimpanan komputer lokal dari komputer kontrol domain.

Ketika perubahan ditemukan, penyimpanan yang di-cache dapat menyinkronkan kembali penyimpanan cache-nya agar sesuai dengan status penyimpanan yang bertahan. CertControlStore juga mendukung proses yang menyalin perubahan penyimpanan yang di-cache ke penyimpanan permanen ketika perubahan ini di penyimpanan yang di-cache tidak disimpan secara otomatis.

Konteks sertifikat seperti penyimpanan sertifikat dapat memiliki properti yang diperluas. CertSetStoreProperty menambahkan properti yang diperluas ke penyimpanan sertifikat. CertGetStoreProperty mengambil properti apa pun yang diatur di penyimpanan sertifikat. Saat ini, satu-satunya properti penyimpanan sertifikat yang telah ditentukan sebelumnya adalah nama toko yang dilokalkan.