Mengonversi pfx ke pem menggunakan openssl

109

Cara menghasilkan .pem sertifikat CA dan sertifikat klien dari file PFX menggunakan OpenSSL.

bie baru
sumber

Jawaban:

107

Anda dapat menggunakan alat baris Perintah OpenSSL. Perintah berikut harus melakukan triknya

openssl pkcs12 -in client_ssl.pfx -out client_ssl.pem -clcerts

openssl pkcs12 -in client_ssl.pfx -out root.pem -cacerts

Jika Anda ingin file Anda dilindungi kata sandi dll, maka ada opsi tambahan.

Anda dapat membaca seluruh dokumentasi di sini .

Jay
sumber
191

Perspektif lain untuk melakukannya di Linux ... berikut adalah cara melakukannya sehingga file tunggal yang dihasilkan berisi kunci pribadi yang didekripsi sehingga sesuatu seperti HAProxy dapat menggunakannya tanpa meminta Anda memasukkan frasa sandi.

openssl pkcs12 -in file.pfx -out file.pem -nodes

Kemudian Anda dapat mengkonfigurasi HAProxy untuk menggunakan file file.pem.


Ini adalah EDIT dari versi sebelumnya di mana saya melakukan beberapa langkah ini sampai saya menyadari opsi -nodes hanya dengan melewati enkripsi kunci pribadi. Tetapi saya akan meninggalkannya di sini karena itu mungkin hanya membantu dalam pengajaran.

openssl pkcs12 -in file.pfx -out file.nokey.pem -nokeys
openssl pkcs12 -in file.pfx -out file.withkey.pem
openssl rsa -in file.withkey.pem -out file.key
cat file.nokey.pem file.key > file.combo.pem
  1. Langkah pertama meminta Anda memasukkan kata sandi untuk membuka PFX.
  2. Langkah kedua meminta Anda untuk itu dan juga membuat kata sandi untuk kunci tersebut.
  3. Langkah ke-3 meminta Anda memasukkan frasa sandi yang baru saja Anda buat untuk menyimpan yang didekripsi.
  4. Yang keempat menempatkan semuanya menjadi 1 file.

Kemudian Anda dapat mengkonfigurasi HAProxy untuk menggunakan file file.combo.pem.

Alasan mengapa Anda memerlukan 2 langkah terpisah di mana Anda menunjukkan file dengan kunci dan satu lagi tanpa kunci, adalah karena jika Anda memiliki file yang memiliki kunci terenkripsi dan didekripsi, sesuatu seperti HAProxy masih meminta Anda untuk mengetikkan kata sandi saat itu menggunakannya.

pengguna2415376
sumber
Saya belum menghabiskan waktu untuk mengenal lebih dekat openssl, tetapi konversi pem tidak termasuk kunci privat. Hasil edit memberikan detail tentang cara menggabungkan sertifikat dan kunci menjadi satu file pem, sesuai yang saya butuhkan.
surut
Pada sistem windows gunakan tipe bukan cat
hupseb
Pada Windows versi OpenSSL ini mudah digunakan untuk hal-hal seperti ini: slproweb.com/products/Win32OpenSSL.html
Helge Klein
Langkah-langkah di atas berfungsi dengan baik untuk mengonversi PFX ke PEM. Saya harus melakukan satu langkah tambahan: buka file PEM licik di editor teks dan pindahkan sertifikat terakhir dalam rantai ke bagian atas file. Jika tidak, nginx akan menampilkan kesalahan yang mengeluh tentang sertifikat dan menolak untuk menggunakannya.
EugeneRomero
Dalam hal ini, Anda dapat menyusun ulang perintah cat untuk menempatkannya terlebih dahulu. seperti: cat file.key file.nokey.pem> file.combo.pem Kecuali file.key itu sendiri memiliki beberapa urutan yang salah. Tapi bagaimanapun juga, Anda mungkin bisa mengatur ulang barang secara terprogram.
pengguna2415376
11

Meskipun jawaban lain benar dan dijelaskan secara menyeluruh, saya menemukan beberapa kesulitan untuk memahaminya. Berikut adalah metode yang saya gunakan ( Diambil dari sini ):

Kasus pertama: Untuk mengonversi file PFX menjadi file PEM yang berisi sertifikat dan kunci pribadi:

openssl pkcs12 -in filename.pfx -out cert.pem -nodes

Kasus kedua: Untuk mengonversi file PFX menjadi file PEM kunci publik dan pribadi:

Ekstrak kunci pribadi dari PFX ke file PEM:

openssl pkcs12 -in filename.pfx -nocerts -out key.pem

Mengekspor sertifikat (hanya mencakup kunci publik):

openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem

Menghapus kata sandi (parafrase) dari kunci pribadi yang diekstrak (opsional):

openssl rsa -in key.pem -out server.key
Mohammed Noureldin
sumber