Bahasa Melayu

Alat pembangun · Pengekod & penyahkod Base64

PEM menjelaskan: sebab sijil dan kunci adalah Base64 antara BEGIN dan END

· Latar belakang

asas64 pengekodan

PEM perisai: BEGIN dan END label dan 64-lajur pembalut Base64 binari DER
Ilustrasi vektor ToolAcre asal

Fail PEM ialah DER binari dibalut dalam Base64 dengan garisan perisai berlabel. Siaran ini menerangkan asal usul format, peraturan barisnya dan perkara yang anda boleh dan tidak boleh pelajari dengan menyahkod satu.

Sijil yang 'kelihatan seperti teks' tetapi gagal dihuraikan — kesilapan taip tajuk, pemulangan kereta sesat dan format di bawah

A PEM fail ialah binari berkod Base64 yang dibalut dengan label teks. Nama itu berasal daripada Mel yang Dipertingkatkan Privasi (RFC 1421, 1992), yang menggunakan format ini untuk mesej yang disulitkan. Format ini kekal pada hari ini dalam TLS sijil, SSH kunci, dan GPG kunci. Strukturnya mudah: baris berkata -----BEGIN CERTIFICATE----- (atau BEGIN PRIVATE KEY, BEGIN PUBLIC KEY, dsb.), diikuti oleh 64-baris aksara teks base64, diikuti dengan -----END CERTIFICATE-----.

Badan base64 menyahkod kepada format binari yang dipanggil DER (Peraturan Pengekodan Terbilang), yang merupakan cara untuk mensiri data berstruktur (khususnya, struktur ASN.1). Menyahkod base64 memberi anda binari; membaca binari memerlukan pemahaman ASN.1, yang kompleks. Perisai PEM wujud kerana fail binari sukar untuk die-mel dan diedit. Fail sijil dalam bentuk binari tulen akan rosak apabila melalui sistem mel lama, USENET atau borang web.

Perisai teks yang boleh dilihat dalam blok PEM — label di sekeliling badan Base64

Dengan pengekodan base64 perduaan dan membungkusnya dalam label teks, keseluruhan sijil menjadi teks 7-bit ASCII yang kekal dalam sebarang pengangkutan. Penyunting teks boleh membukanya; sistem mel tidak akan merosakkannya. Garisan -----BEGIN dan -----END ialah label untuk manusia dan alat automatik; mereka dengan jelas menandakan jenis data yang ada di dalamnya. Sijil dilabelkan CERTIFICATE; kunci peribadi dilabelkan PRIVATE KEY.

Label tidak disahkan oleh perisian kriptografi; ia hanyalah petunjuk untuk manusia dan alat. 64-had garis watak masuk PEM berasal dari RFC 1421 dan sama MIME penaakulan sebagai base64 e-mel: sistem mel lama mempunyai had panjang talian, dan 64 aksara sesuai pada terminal 1980-an. PEM membalut keluaran base64 pada 64 aksara dengan penghujung baris (CR LF pada Windows, LF pada Unix).

Daripada teks berlabel kepada bait yang dinyahkod — repositori ini tidak mewujudkan sejarah format

Apabila menyahkod sijil PEM, penghurai mesti menanggalkan garisan perisai (-----BEGIN..., -----END...) dan garisan terputus, kemudian base64-menyahkod bakinya. Pemulangan kereta sesat atau label yang tidak sepadan boleh memecahkan penghuraian. Pembalut garisan bukan sebahagian daripada standard base64 (RFC 4648 base64 dibuka); ia khusus untuk PEM. Di dalam base64 ialah binari berkod DER. DER ialah ASN.1 (Notasi Sintaks Abstrak), spesifikasi kompleks untuk mewakili struktur data.

Sijil ialah rekod berstruktur yang mengandungi nama subjek, kunci awam, tandatangan dan metadata. ASN.1 tidak menerangkan bait secara langsung; ia menerangkan bagaimana struktur harus dikodkan.

Anatomi blok sebagai input kepada alat ini — keluarkan label dan pas badan Base64 sahaja

Pengekodan bermula dengan triplet nilai panjang teg. Contohnya, SEQUENCE dalam ASN.1 dikodkan sebagai teg 0x30, diikuti dengan panjang kandungan, diikuti dengan kandungan itu sendiri. Sijil sentiasa bermula dengan bait 0x30 0x82 (urutan, panjang dikodkan dalam dua bait), yang muncul sebagai MII dalam base64.

Menyemak sijil tanpa menghuraikannya: tiga aksara pertama badan sijil PEM hampir selalu MII (iaitu 0x30 0x82 dalam base64, permulaan SEQUENCE). Jika blok PEM tidak menyahkod kepada 0x30, base64 rosak atau labelnya salah. Alat pengekod & penyahkod Base64 boleh menyahkod badan dan menunjukkan kepada anda heks: tampal garisan base64 (tanpa perisai -----BEGIN dan END), alih keluar pemisah baris dan nyahkod.

Perkara yang didedahkan penyahkodan: bait binari, bukan medan sijil yang dihuraikan

Jika output adalah binari bermula dengan 30 82, kemungkinan besar struktur sijil yang sah. Jika ia adalah omong kosong atau teks, penyahkod gagal atau base64 adalah salah. Ralat PEM biasa: ketidakpadanan label (cth., badan sijil dengan label PRIVATE KEY), isu penamat baris Windows (sesetengah penghurai tercekik pada CRLF), kesilapan taip dalam baris perisai atau aksara yang hilang (ruang tambahan yang hilang).

Alat mengharapkan -----BEGIN CERTIFICATE----- bukan -----BEGIN CERT----- atau BEGIN CERTIFICATE. Salin-tampal PEM daripada pelayar web atau PDF boleh memperkenalkan petikan Unikod atau petikan pintar dan bukannya petikan ASCII, memecahkan label. Menampal kunci peribadi ke dalam medan sijil ialah kesilapan biasa; penghurai akan menolaknya kerana label tidak sepadan. PEM menyokong berbilang blok dalam satu fail.

Contoh yang berfungsi: menyahkod badan pendek dan memeriksa bait tanpa menegaskan tandatangan sijil

Fail kunci SSH mungkin mengandungi kedua-dua kunci peribadi (berlabel PRIVATE KEY) dan kunci awam (berlabel PUBLIC KEY), atau berbilang blok sijil. Penghurai membaca fail dari atas, mencari baris bermula dengan -----BEGIN. Apabila ia menemui satu, ia membaca sehingga -----END dengan label yang sepadan, ekstrak dan base64-menyahkod badan dan memprosesnya. Kemudian ia terus mencari blok seterusnya.

Rantaian sijil yang digabungkan secara tidak sengaja (berbilang PEM blok untuk sijil dan perantaraannya) dalam satu fail adalah sah jika semua label adalah betul. Format PEM telah diseragamkan untuk Mel Dipertingkatkan Privasi (RFC 1421) pada awal 1990-an.

Perkara ini tidak meliputi — menghuraikan struktur ASN.1, penyulitan kunci persendirian dan PKCS#12 fail

RFC 7468 (2015) memodenkan definisi, menjelaskan peraturan panjang garis, format garis perisai dan bekas tepi. Kebanyakan alat dan piawaian merujuk RFC 7468 sekarang. Format binari-ke-teks lain wujud (seperti DER-to-hex untuk sesetengah protokol), tetapi PEM dengan label base64 dan ASCII ialah standard de facto untuk kriptografi dan TLS kerana ia boleh dibaca oleh manusia, biasa atau teks, dan mudah untuk disalin.

Bangunan a PEM blok: ambil DER binari (cth., sijil daripada perpustakaan kriptografi), mengekodkannya ke base64, bungkus hasilnya pada 64 aksara dengan pemisah baris, dan kelilinginya dengan -----BEGIN CERTIFICATE----- dan -----END CERTIFICATE----- baris. Menghurai a PEM blok: cari -----BEGIN dan -----END baris, ekstrak badan base64 (menanggalkan perisai dan pemisah baris), base64-nyahkod untuk mendapatkan binari, kemudian huraikan DER dan ASN.1 binari.

Bawa pulang: PEM ialah Base64 dengan label — cara pengekod & penyahkod Base64 memberi anda tempat setempat untuk mencuba badan Base64 blok, sepenuhnya dalam pelayar

Kebanyakan alat mengautomasikan ini; anda jarang membina PEM dengan tangan. Tetapi memahami struktur berguna apabila menyahpepijat ralat penghuraian atau semasa mengesahkan sijil secara manual. Sijil PEM kelihatan seperti teks, tetapi kandungannya ialah data binari. Membaca label permulaan dan akhir tidak memberitahu anda apa yang terkandung dalam sijil; anda mesti menyahkod base64 dan menghuraikan ASN.1 untuk melihat nama subjek, kunci awam, pengeluar dan tamat tempoh.

Alat pengekod & penyahkod Base64 boleh menyahkod badan supaya anda boleh memeriksa beberapa bait pertama. Untuk penghuraian penuh, anda memerlukan penghurai ASN.1 (kebanyakan bahasa pengaturcaraan mempunyai perpustakaan untuk ini). Wawasan utama ialah PEM ialah format bekas: ia menyimpan sebarang data berkod DER, bukan sahaja sijil. Label memberitahu anda penggunaan yang dimaksudkan, tetapi penghurai mesti mengendalikan jenis data dengan betul.