Pertanyaan Apa yang dimaksud dengan file Pem dan bagaimana itu berbeda dari OpenSSL Generated Key File Formats lainnya?


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

Namun, dalam pencarian saya, saya sering menemukan format file yang berbeda (.key, .csr, .pem) tetapi saya tidak pernah dapat menemukan penjelasan yang baik tentang apa tujuan format file masing-masing.

Saya ingin tahu apakah orang-orang baik di sini di ServerFault dapat memberikan beberapa klarifikasi mengenai masalah ini?


1173
2018-05-19 02:24




stackoverflow.com/a/45886431/1599699 - Andrew


Jawaban:


SSL telah ada cukup lama Anda akan berpikir bahwa akan ada disepakati format kontainer. Dan Anda benar, ada. Terlalu banyak standar saat itu terjadi. Jadi ini yang saya tahu, dan saya yakin orang lain akan menyetujuinya.

  • .csr - Ini adalah Permintaan Penandatanganan Sertifikat. Beberapa aplikasi dapat menghasilkan ini untuk diserahkan kepada otoritas sertifikat. Format sebenarnya adalah PKCS10 yang didefinisikan dalam RFC 2986. Ini mencakup beberapa / semua rincian kunci 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 termasuk kunci publik tetapi bukan kunci privat), yang dapat berupa beberapa format.
  • .pem - Ditetapkan dalam RFC 1421 melalui 1424, ini adalah format penampung yang mungkin hanya berisi sertifikat publik (seperti dengan pemasangan Apache, dan file sertifikat CA /etc/ssl/certs), atau mungkin termasuk seluruh rantai sertifikat termasuk kunci publik, kunci privat, dan sertifikat root. Yang membingungkan, mungkin juga menyandikan CSR (misalnya seperti yang digunakan sini) karena format PKCS10 dapat diterjemahkan ke dalam PEM. Namanya berasal Privasi Enhanced Mail (PEM), metode gagal untuk email yang aman tetapi format wadah yang digunakan terus hidup, dan merupakan terjemahan base64 kunci x509 ASN.1.
  • .kunci - Ini adalah file berformat PEM yang hanya berisi kunci-pribadi sertifikat tertentu dan hanya nama biasa dan bukan yang standar. Di Apache menginstal, ini sering berada di /etc/ssl/private. Hak-hak pada file-file ini sangat penting, dan beberapa program akan menolak untuk memuat sertifikat ini jika mereka salah.
  • .pkcs12 .pfx .p12 - Awalnya didefinisikan oleh RSA di Standar Kriptografi Kunci Publik (disingkat PKCS), varian "12" pada awalnya ditingkatkan oleh Microsoft, dan kemudian diserahkan sebagai RFC 7292. Ini adalah format kontainer yang mengandung kata sandi yang berisi pasangan sertifikat publik dan pribadi. Tidak seperti file .pem, penampung ini sepenuhnya dienkripsi. Openssl dapat mengubah ini 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 - Sebuah cara untuk menyandikan sintaks ASN.1 dalam biner, file .pem hanya file yang disandikan Base64. OpenSSL dapat mengonversinya menjadi .pem (openssl x509 -inform der -in to-convert.der -out converted.pem). Windows melihat ini sebagai file Sertifikat. Secara default, Windows akan mengekspor sertifikat sebagai file berformat .DER dengan ekstensi yang berbeda. Seperti...
  • .cert .cer .crt - File berformat .pem (atau jarang .der) dengan ekstensi yang berbeda, yang dikenali oleh Windows Explorer sebagai sertifikat, yang .pem tidak.
  • .p7b .keystore - Ditetapkan dalam RFC 2315 sebagai PKC nomor 7, ini adalah format yang digunakan oleh Windows untuk pertukaran sertifikat. Java memahami ini secara asli, dan sering menggunakan .keystore sebagai perpanjangan. Tidak seperti sertifikat gaya .pem, format ini memiliki didefinisikan cara untuk menyertakan sertifikat sertifikasi jalur.
  • .crl - Daftar pencabutan sertifikat. Otoritas Sertifikat menghasilkan ini sebagai cara untuk membatalkan otorisasi sertifikat sebelum kedaluwarsa. Terkadang Anda dapat mengunduhnya dari situs web CA.

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

  • PEM - Diatur oleh RFC, yang digunakan secara istimewa oleh perangkat lunak open-source. Ini dapat memiliki berbagai ekstensi (.pem, .key, .cer, .cert, selengkapnya)
  • PKCS7 - Standar terbuka yang digunakan oleh Java dan didukung oleh Windows. Tidak mengandung materi kunci pribadi.
  • PKCS12 - Standar privat Microsoft yang kemudian didefinisikan dalam RFC yang memberikan peningkatan keamanan dibandingkan format PEM biasa. Ini dapat berisi materi kunci pribadi. Ini digunakan secara istimewa oleh sistem Windows, dan dapat dengan bebas dikonversi ke format PEM melalui penggunaan openssl.
  • DER - Format induk PEM. Ini berguna untuk menganggapnya sebagai versi biner file PEM yang berenkode base64. Tidak secara rutin digunakan sangat banyak di luar Windows.

Saya harap ini membantu.


1449
2018-05-19 02:49



Hal hebat tentang standar adalah banyak sekali yang bisa dipilih ... - squillman
.crt adalah ekstensi umum lainnya untuk .cert dan .cer - David Pashley
PEM adalah format file yang dapat terdiri dari sertifikat (alias kunci publik), kunci pribadi atau memang keduanya digabungkan bersama. Jangan terlalu memperhatikan ekstensi file; itu berarti Privasi Enhanced Mail, penggunaan itu tidak melihat banyak digunakan untuk tetapi format file terjebak di sekitar. - Dan Carley
Jawaban yang sangat berguna, tetapi saya tidak berpikir Anda telah menutupi format .pub yang dibuat oleh ssh-keygen. Akan sangat berguna untuk mengetahui bagaimana hubungan itu dengan sisanya. - Jez
Tidak dapat membantu memperhatikan "Email Peningkatan Privasi" akan memberikan akronim "PEE" sebagai lawan dari "PEM". RFC cenderung menggunakan frasa "Privasi Enhanced Mail" - aidan


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

PEM adalah sertifikat X.509 (yang strukturnya ditentukan menggunakan ASN.1), disandikan menggunakan ASN.1 DER (aturan pengkodean yang berbeda), kemudian dijalankan melalui pengkodean Base64 dan terjebak di antara garis anchor teks biasa (SERTIFIKAT BEGIN dan SERTIFIKAT AKHIR ).

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

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

RFC1422 memiliki rincian lebih lanjut tentang standar PEM karena terkait dengan kunci dan sertifikat.


123
2018-06-06 15:19



Bagaimana Anda melakukan ini "menggunakan baris perintah openssl"? - Samik R
Untuk mengkonversi file DER (.crt .cer .der) ke PEM: openssl x509 -inform der -in cert.cer -out cert.pem. Untuk mengonversi file PEM ke DER: openssl x509 -outform der -in cert.pem -out certi.der. Untuk mengkonversi file PKCS # 12 (.pfx .p12) yang berisi kunci privat dan sertifikat ke PEM: openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes. Untuk mengonversi file sertifikat PEM dan kunci pribadi ke PKCS # 12 (.pfx .p12): openssl pkcs12 -export -out cert.pfx -inkey privateKey.key -in cert.crt -certfile CACert.crt Dari sini - mpeac


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


51
2018-03-15 00:24



Memang benar, saya baru menyadarinya hari ini. Saya harus memasukkan sertifikat PEM di loadbalancer rackspace dan saya bertanya-tanya apakah crt yang dihasilkan dalam format itu. Tapi itu berhasil seperti itu, jadi itu kesimpulan saya juga, sebagian besar .crt ini datang dalam format PEM tampaknya. - Glenn Plas