it-swarm-id.com

Apa itu file Pem dan bagaimana perbedaannya dengan OpenSSL Generated Key File Format lainnya?

Saya bertanggung jawab untuk memelihara dua server Debian. Setiap kali saya harus melakukan apa pun dengan sertifikat keamanan, saya mencari tutorial di Google dan mengalahkan sampai akhirnya berhasil.

Namun, dalam pencarian saya, saya sering menemukan berbagai format file (.key, .csr, .pem) tapi saya tidak pernah bisa menemukan penjelasan yang baik tentang apa tujuan setiap format file.

Saya bertanya-tanya apakah orang-orang baik di ServerFault dapat memberikan klarifikasi tentang masalah ini?

1413
Noah Goodrich

SSL sudah ada cukup lama Anda akan berpikir bahwa akan ada format wadah yang disepakati. Dan Anda benar, ada. Terlalu banyak standar yang terjadi. Jadi ini yang saya tahu, dan saya yakin orang lain akan ikut.

  • . csr - Ini adalah Permintaan Penandatanganan Sertifikat. Beberapa aplikasi dapat menghasilkan ini untuk diajukan ke otoritas sertifikat. Format sebenarnya adalah PKCS10 yang didefinisikan dalam RFC 2986 . Ini mencakup beberapa/semua detail utama dari sertifikat yang diminta seperti subjek, organisasi, negara bagian, yang lainnya, serta kunci publik sertifikat untuk ditandatangani. Ini bisa ditandatangani oleh CA dan sertifikat dikembalikan. Sertifikat yang dikembalikan adalah publik sertifikat (yang mencakup kunci publik tetapi bukan kunci privat), yang dengan sendirinya dapat dalam beberapa format.
  • .pem - Didefinisikan dalam RFC 1421 sampai 1424 , ini adalah format wadah yang dapat mencakup hanya sertifikat publik (seperti dengan pemasangan Apache, dan file sertifikat CA /etc/ssl/certs), atau dapat mencakup seluruh rantai sertifikat termasuk kunci publik, kunci pribadi, dan sertifikat root. Yang membingungkan, itu juga dapat menyandikan CSR (mis. Seperti yang digunakan di sini ) karena format PKCS10 dapat diterjemahkan ke dalam PEM. Namanya dari Privacy Enhanced Mail (PEM) , metode gagal untuk email aman tetapi format wadah yang digunakannya tetap hidup, dan merupakan terjemahan base64 dari kunci x509 ASN.1.
  • . key - Ini adalah file berformat PEM yang hanya berisi kunci privat dari sertifikat tertentu dan hanya merupakan nama konvensional dan bukan nama standar. Di instalasi Apache, ini sering berada di /etc/ssl/private. Hak atas file-file ini sangat penting, dan beberapa program akan menolak untuk memuat sertifikat ini jika itu salah.
  • . pkcs12 .pfx .p12 - Awalnya didefinisikan oleh RSA dalam Standar Kriptografi Kunci Publik (disingkat PKCS), the " Varian 12 "pada awalnya ditingkatkan oleh Microsoft, dan kemudian dikirimkan sebagai RFC 7292 . Ini adalah format wadah dengan kata sandi yang berisi pasangan sertifikat publik dan pribadi. Tidak seperti file .pem, wadah ini sepenuhnya dienkripsi. Openssl dapat mengubahnya menjadi file .pem dengan kunci publik dan pribadi: openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes

Beberapa format lain yang muncul dari waktu ke waktu:

  • . der - Cara untuk menyandikan sintaks ASN.1 dalam biner, file .pem hanyalah file .der yang disandikan Base64. OpenSSL dapat mengonversinya menjadi .pem (openssl x509 -inform der -in to-convert.der -out converted.pem). Windows melihatnya sebagai file Sertifikat. Secara default, Windows akan mengekspor sertifikat sebagai file berformat .DER dengan ekstensi berbeda. Suka...
  • . cert .cer .crt - File berformat .pem (atau jarang .der) dengan ekstensi berbeda, yang dikenali oleh Windows Explorer sebagai sertifikat, yang .pem tidak.
  • . p7b .keystore - Ditentukan dalam RFC 2315 sebagai PKCS nomor 7, ini adalah format yang digunakan oleh Windows untuk pertukaran sertifikat. Java memahami ini secara asli, dan sering menggunakan .keystore sebagai ekstensi. Tidak seperti sertifikat gaya .pem, format ini memiliki cara ditentukan untuk menyertakan sertifikat jalur sertifikasi.
  • . crl - Daftar pencabutan sertifikat. Otoritas Sertifikat menghasilkan ini sebagai cara untuk membatalkan otorisasi sertifikat sebelum kedaluwarsa. Anda terkadang dapat mengunduhnya dari situs web CA.

Singkatnya, ada empat cara berbeda untuk menyajikan sertifikat dan komponennya:

  • [~ # ~] pem [~ # ~] - Diatur oleh RFCs, digunakan khusus oleh perangkat lunak sumber terbuka. Itu dapat memiliki berbagai ekstensi (.pem, .key, .cer, .cert, selengkapnya)
  • PKCS7 - Standar terbuka yang digunakan oleh Java dan didukung oleh Windows. Tidak mengandung bahan kunci pribadi.
  • PKCS12 - Standar pribadi Microsoft yang kemudian didefinisikan dalam RFC yang memberikan peningkatan keamanan versus format PEM teks biasa. Ini dapat berisi materi kunci pribadi. Ini digunakan secara istimewa oleh sistem Windows, dan dapat secara bebas dikonversi ke format PEM melalui penggunaan openssl.
  • [~ # ~] der [~ # ~] - Format induk PEM. Ini berguna untuk menganggapnya sebagai versi biner dari file PEM yang disandikan base64. Tidak secara rutin digunakan di luar Windows.

Saya harap ini membantu.

1730
sysadmin1138

PEM itu sendiri bukan sertifikat, itu hanya cara penyandian data. Sertifikat X.509 adalah salah satu jenis data yang biasanya dikodekan menggunakan PEM.

PEM adalah sertifikat X.509 (yang strukturnya didefinisikan menggunakan ASN.1), disandikan menggunakan ASN.1 DER (aturan penyandian yang dibedakan), kemudian dijalankan melalui pengkodean Base64 dan terjebak di antara garis jangkar teks biasa (BEGIN CERTIFICATE dan END CERTIFICATE ).

Anda dapat merepresentasikan data yang sama menggunakan representasi PKCS # 7 atau PKCS # 12, dan utilitas baris perintah openssl dapat digunakan untuk melakukan ini.

Manfaat jelas dari PEM adalah bahwa aman untuk menempelkan ke dalam tubuh pesan email karena memiliki garis jangkar dan bersih 7-bit.

RFC1422 memiliki detail lebih lanjut tentang standar PEM yang terkait dengan kunci dan sertifikat.

146
James F

Terkadang .crt file sudah menjadi .pem. Lihat: https://stackoverflow.com/questions/991758/openssl-pem-key

57
mgold