Pengantar Sintaks dan Pengodean ASN.1
API Pendaftaran Sertifikat menggunakan Abstract Syntax Notation One (ASN.1) untuk menentukan, mengodekan, dan mendekode permintaan sertifikat dan sertifikat yang ditransfer antara komputer klien dan otoritas sertifikasi. ASN.1 dapat secara konseptual dibagi menjadi sekumpulan aturan sintaks dan serangkaian aturan pengodean seperti yang ditunjukkan oleh contoh berikut.
Contoh Sintaks ASN.1
Permintaan sertifikat berisi, antara lain, nama entitas yang membuat permintaan atau permintaan yang sedang dibuat. Nama ini adalah urutan X.500 nama dibedakan relatif (RDN). Setiap RDN dalam urutan terdiri dari pengidentifikasi objek (OID) dan nilai. Sintaks ASN.1 untuk nama subjek diperlihatkan dalam contoh berikut.
---------------------------------------------------------------------
-- Subject name
---------------------------------------------------------------------
Name ::= SEQUENCE OF RelativeDistinguishedName
RelativeDistinguishedName ::= SET OF AttributeTypeValue
AttributeTypeValue ::= SEQUENCE
{
type OBJECT IDENTIFIER,
value ANY
}
Contoh Pengodean ASN.1
API Pendaftaran Sertifikat menggunakan Distinguished Encoding Rules (DER) untuk mengodekan nama subjek sebelumnya. DER mengharuskan setiap item dalam nama diwakili oleh kembar tiga TLV di mana T berisi nomor tag jenis ASN.1, L berisi panjang, dan V berisi nilai terkait. Contoh berikut menunjukkan bagaimana nama subjek TestCN.TestOrg dikodekan.
1. 30 23 ; SEQUENCE (0x23 = 35 Bytes)
2. | | 31 0f ; SET (f Bytes)
3. | | | 30 0d ; SEQUENCE (d Bytes)
4. | | | 06 03 ; OBJECT_ID (3 Bytes)
5. | | | | 55 04 03
6. | | | | ; 2.5.4.3 Common Name (CN)
7. | | | 13 06 ; PRINTABLE_STRING (6 Bytes)
8. | | | 54 65 73 74 43 4e ; TestCN
9. | | | ; "TestCN"
10. | | 31 10 ; SET (10 Bytes)
11. | | 30 0e ; SEQUENCE (e Bytes)
12. | | 06 03 ; OBJECT_ID (3 Bytes)
13. | | | 55 04 0a
14. | | | ; 2.5.4.10 Organization (O)
15. | | 13 07 ; PRINTABLE_STRING (7 Bytes)
16. | | 54 65 73 74 4f 72 67 ; TestOrg
17. | | ; "TestOrg"
Perhatikan poin berikut:
- Baris 1:
- Nama ini adalah urutan nama yang dibedakan relatif.
Nomor tag untuk jenis SEQUENCE 0x30.
Nama subjek TestCN.TestOrg memerlukan 35 (0x23) byte. - Baris 2:
- Nama Umum, TestCN, adalah satu set struktur AttributeTypeValue .
Nomor tag untuk SET 0x31. - Baris 3:
- Struktur AttributeTypeValue adalah urutan.
Nomor tag untuk jenis SEQUENCE 0x30.
Struktur membutuhkan 13 (0xD) byte. - Baris 4 hingga 6:
- Pengidentifikasi objek (OID) untuk Nama Umum adalah 2.5.4.3.
OID adalah jenis OBJECT_ID tiga byte.
Nomor tag untuk jenis OBJECT_ID 0x06. - Baris 7 hingga 9:
- Nama Umum, TestCN, adalah nilai string.
String adalah jenis PRINTABLE_STRING enam byte.
Nomor tag untuk jenis PRINTABLE_STRING 0x13.
Topik terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk