Bagikan melalui


Penangan Ekstensi

Dimulai dengan format Sertifikat X.509 Versi 3, sertifikat mungkin berisi ekstensi sertifikat. (Untuk konten Sertifikat X.509, lihat Properti Sertifikat.) Ekstensi ini menunjukkan informasi tambahan. Misalnya, ekstensi dapat menunjukkan informasi identifikasi subjek tambahan, atau dapat menunjukkan informasi penggunaan utama, yang menentukan tugas (seperti tanda tangan atau enkripsi) yang kuncinya dapat digunakan. Sekumpulan ekstensi standar didefinisikan untuk penggunaan aplikasi, dan ekstensi juga dapat disesuaikan.

Setiap ekstensi memiliki string pengidentifikasi objek terkait yang mengidentifikasi jenis informasi tambahan dan struktur data yang berisi informasi ini. Misalnya, pengidentifikasi objek penggunaan utama adalah "2.5.29.15", yang menunjukkan informasi penggunaan utama. Struktur data terkait adalah CRYPT_BIT_BLOB (bitfield) yang menentukan bagaimana kunci dapat digunakan.

Ekstensi dapat ditambahkan ke sertifikat sebelum diterbitkan. Ketika sertifikat diterbitkan, ekstensi apa pun yang diaktifkan adalah bagian dari sertifikat. Jika ekstensi ditandai penting, penggunaannya harus diketahui dengan menggunakan aplikasi, dan aplikasi harus mematuhi niat atau nilai ekstensi. Layanan Sertifikat memungkinkan ekstensi diatur pada sertifikat yang tidak diterbitkan melalui metode yang disediakan oleh ICertAdmin dan ICertServerPolicy. Untuk detail tentang ekstensi sertifikat, lihat CERT_EXTENSION dalam dokumentasi CryptoAPI. Untuk informasi tentang struktur data ekstensi sertifikat umum, lihat Struktur Ekstensi Sertifikat X.509.

Handler ekstensi adalah objek COM yang menyediakan rutinitas untuk mengodekan ekstensi dan jenis data yang lebih kompleks, tetapi umum digunakan, seperti IA5String atau PrintableString.

Ekstensi yang memiliki jenis data DATE, LONG, dan BSTR tidak memerlukan handler ekstensi. Modul kebijakan hanya memanggil ICertServerPolicy::SetCertificateExtension dengan parameter Type yang diatur ke nilai yang mewakili jenis data ekstensi: PROPTYPE_DATE, PROPTYPE_LONG, atau PROPTYPE_STRING. Kemudian meneruskan ekstensi ke mesin server. Mesin server, pada gilirannya, melakukan pengodean Abstract Syntax Notation One (ASN.1) sebelum menyimpan ekstensi dalam sertifikat.

Namun, ekstensi yang memiliki jenis data selain jenis default ini harus dikodekan ASN.1 oleh handler ekstensi sebelum modul kebijakan meneruskannya ke mesin server. Ketika modul kebijakan memanggil ICertServerPolicy::SetCertificateExtension untuk meneruskan ekstensi yang dikodekan ASN.1 ke mesin server, modul tersebut harus mengatur parameter Jenis ke PROPTYPE_BINARY. Mesin server kemudian hanya menyimpan ekstensi yang dikodekan ini dalam sertifikat.

Handler ekstensi default, Certenc.dll, mengekspor sejumlah antarmuka ICertEncodeXXX dan dapat dipanggil oleh modul kebijakan. Informasi jenis yang diperlukan juga terkandung dalam Certencl.dll yang disediakan dalam Kit Pengembangan Perangkat Lunak Platform (SDK). Setiap antarmuka menyediakan metode Encode yang mengembalikan ekstensi sertifikat yang dikodekan ASN.1 ke modul kebijakan dalam format biner. Modul kebijakan kemudian dapat mengatur ekstensi dalam sertifikat dengan memanggil metode ICertServerPolicy::SetCertificateExtension .

Untuk informasi selengkapnya, lihat Menulis Handler Ekstensi Kustom.