Bagaimana saya bisa membuat file PEM dari sertifikat SSL?
Ini adalah file yang saya miliki:
.crt
server.csr
server.key
Bagaimana saya bisa membuat file PEM dari sertifikat SSL?
Ini adalah file yang saya miliki:
.crt
server.csr
server.key
Jawaban:
Kunci Anda mungkin sudah dalam format PEM, tetapi baru dinamai dengan .crt atau .key.
Jika konten file dimulai dengan -----BEGIN
dan Anda dapat membacanya di editor teks:
File menggunakan base64, yang dapat dibaca dalam ASCII, bukan format biner. Sertifikat sudah dalam format PEM. Cukup ubah ekstensi menjadi .pem.
Jika file tersebut dalam biner:
Untuk server.crt, Anda akan menggunakan
openssl x509 -inform DER -outform PEM -in server.crt -out server.crt.pem
Untuk server.key, gunakan openssl rsa
di tempat openssl x509
.
Server.key kemungkinan merupakan kunci pribadi Anda, dan file .crt adalah sertifikat x509 yang dikembalikan, ditandatangani, dan ditandatangani.
Jika ini untuk server Web dan Anda tidak dapat menentukan pemuatan kunci privat dan publik yang terpisah:
Anda mungkin perlu menggabungkan dua file. Untuk penggunaan ini:
cat server.crt server.key > server.includesprivatekey.pem
Saya akan merekomendasikan penamaan file dengan "includeprivatekey" untuk membantu Anda mengelola izin yang Anda simpan dengan file ini.
cat server.crt server.key > server.pem
tidak akan menempatkan komentar terbuka pada barisnya sendiri, yang tampaknya menjadi persyaratan. Surat kurir memberi saya neraka dan butuh berjam-jam untuk mencari tahu apa yang salah.
server.crt server.key > server.includesprivatekey.pem
berguna untuk SSL dengan haproxy 1.5.
Saya perlu melakukan ini untuk AWS ELB. Setelah dipukuli oleh dialog berkali-kali, akhirnya ini yang berhasil bagi saya:
openssl rsa -in server.key -text > private.pem
openssl x509 -inform PEM -in server.crt > public.pem
Terima kasih NCZ
Sunting: Seperti yang dikatakan @floatingrock
Dengan AWS, jangan lupa untuk mengawali nama file dengan file://
. Jadi akan terlihat seperti:
aws iam upload-server-certificate --server-certificate-name blah --certificate-body file://path/to/server.crt --private-key file://path/to/private.key --path /cloudfront/static/
http://docs.aws.amazon.com/cli/latest/reference/iam/upload-server-certificate.html
file://
. Jadi akan terlihat seperti:aws iam upload-server-certificate --server-certificate-name blah --certificate-body file://~/Desktop/server.crt --private-key file://~/Desktop/private.key --path /cloudfront/static/
Sebuah pem
file berisi sertifikat dan kunci pribadi. Tergantung pada format sertifikat / kunci Anda, tetapi mungkin sesederhana ini:
cat server.crt server.key > server.pem
-bash: server.key.pem: Permission denied
Selain itu, jika Anda tidak ingin meminta passphrase, maka perlu menjalankan perintah berikut:
openssl rsa -in server.key -out server.key
-----BEGIN RSA PRIVATE KEY-----
dan memiliki yang dimulai -----BEGIN ENCRYPTED PRIVATE KEY-----
, ini adalah perintah yang ingin Anda gunakan.
Apa yang saya amati adalah: jika Anda menggunakan openssl untuk menghasilkan sertifikat, ia menangkap bagian teks dan bagian sertifikat base64 dalam file crt. Format pem ketat mengatakan ( definisi wiki ) bahwa file harus mulai dan diakhiri dengan BEGIN dan END.
.pem - (Privacy Enhanced Mail) Base64 menyandikan sertifikat DER, terlampir di antara "----- BEGIN CERTIFICATE -----" dan "----- END CERTIFICATE -----"
Jadi untuk beberapa perpustakaan (saya temui ini di java) yang mengharapkan format pem yang ketat, crt yang dihasilkan akan gagal validasi sebagai 'format pem yang tidak valid'.
Bahkan jika Anda menyalin atau menerima baris dengan BEGIN / END CERTIFICATE, dan menempelkannya dalam file cert.pem, itu harus bekerja.
Inilah yang saya lakukan, tidak terlalu bersih, tetapi berfungsi untuk saya, pada dasarnya ini memfilter teks mulai dari baris BEGIN:
grep -A 1000 BEGIN cert.crt> cert.pem
openssl x509
. Ini akan menampilkan sertifikat PEM yang valid: cat certificate.crt | openssl x509 > certificate.pem
sed -n '/--BEGIN/,$p' cert.crt
dalam kasus ini. Untuk menjelaskan bahwa: "-n" memberitahu sed untuk tidak mencetak apa pun secara default, dan kemudian ekspresi range /--BEGIN/,$
membuat p
perintah (print) berlaku untuk baris antara baris pertama yang berisi --BEGIN
dan akhir file ( $
).
Saya mencoba untuk beralih dari GoDaddy ke mesin aplikasi. Apa triknya menggunakan baris ini:
openssl req -new -newkey rsa:2048 -nodes -keyout name.unencrypted.priv.key -out name.csr
Persis seperti apa adanya, tetapi mengganti nama dengan nama domain saya (bukan berarti itu benar-benar penting)
Dan saya menjawab semua pertanyaan yang berkaitan dengan nama umum / organisasi sebagai www.name.com
Lalu saya membuka csr, menyalinnya, menempelkannya di go daddy, lalu mengunduhnya, membuka ritsletingnya, menavigasi ke folder yang tidak di-zip dengan terminal dan memasukkan:
cat otherfilegodaddygivesyou.crt gd_bundle-g2-g1.crt > name.crt
Kemudian saya menggunakan instruksi ini dari Trouble with Google Apps Custom Domain SSL , yaitu:
openssl rsa -in privateKey.key -text > private.pem
openssl x509 -inform PEM -in www_mydomain_com.crt > public.pem
persis apa adanya, kecuali alih-alih privateKey.key saya menggunakan name.unencrypted.priv.key, dan alih-alih www_mydomain_com.crt, saya menggunakan name.crt
Kemudian saya mengunggah public.pem ke admin admin untuk "PEM encode sertifikat X.509", dan mengunggah private.pem untuk "PEM yang tidak dienkripsi mengenkripsi kunci pribadi RSA yang disandikan" ..
.. Dan akhirnya berhasil.
Mencoba mengunggah sertifikat GoDaddy ke AWS saya gagal beberapa kali, tetapi pada akhirnya itu sangat sederhana. Tidak perlu mengonversi apa pun menjadi .pem. Anda hanya perlu memastikan untuk menyertakan sertifikat bundel GoDaddy dalam parameter rantai, misalnya
aws iam upload-server-certificate
--server-certificate-name mycert
--certificate-body file://try2/40271b1b25236fd1.crt
--private-key file://server.key
--path /cloudfront/production/
--certificate-chain file://try2/gdig2_bundle.crt
Dan untuk menghapus unggahan gagal sebelumnya Anda bisa Anda lakukan
aws iam delete-server-certificate --server-certificate-name mypreviouscert
An error occurred (MalformedCertificate) when calling the UploadServerCertificate operation: Unable to parse certificate. Please ensure the certificate is in PEM format.
Jalankan perintah di bawah ini:
a) openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes
,
b) openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts
openssl pkcs12 -dalam YOUR_CERTIFICATE.p12 -keluar dari YOUR_CERTIFICATE.pem -nodes -clcerts
.pem
ke.crt
dan.key
.