Bagikan melalui


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.

Sistem Jenis ASN.1

Pengodean Permintaan Sertifikat

Pengodean DER Jenis ASN.1

Distinguished Encoding Rules