Periksa format server.key. Saya hanya berasumsi itu RSA. Tetapi membaca baris pertama file mungkin akan memberi tahu Anda hal itu.
Maxwellb
10
Hanya kepala di atas yang cat server.crt server.key > server.pemtidak 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.
Graham Walters
1
Terimakasih Graham. Alat yang berbeda akan menghasilkan file secara berbeda, dan pada akhirnya, beberapa verifikasi baik. Ketika saya melakukan langkah-langkah ini, file berakhir dengan baris baru, misalnya.
maxwellb
Kiat tentang menggabungkan file .crt dan .key bersama-sama sangat membantu. Saya ingin menggunakan sertifikat saya dengan stunnel3, tetapi tidak memiliki cara untuk menentukan file kunci. Menggunakan penggabungan berhasil. (Sebenarnya, karena stunnel3 adalah program Perl, saya menambahkan opsi untuk itu sendiri untuk membaca file kunci. Namun, karena saya kemudian melihat penggabungan bekerja, saya telah mengembalikan stunnel3 ke kode aslinya.)
LS
2
Hanya sedikit yang mengatakan bahwa kucing server.crt server.key > server.includesprivatekey.pemberguna untuk SSL dengan haproxy 1.5.
jimm101
224
Saya perlu melakukan ini untuk AWS ELB. Setelah dipukuli oleh dialog berkali-kali, akhirnya ini yang berhasil bagi saya:
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://~/Desktop/server.crt --private-key file://~/Desktop/private.key --path /cloudfront/static/
FloatingRock
1
Perintah kedua tidak melakukan apa-apa jika input Anda adalah file pem jadi dengan asumsi itu, Anda hanya perlu perintah pertama
Kristofer
Luar biasa! Ini bekerja dengan baik untuk saya! Baru saja mengonversi file .key dan .crt saya menjadi .pem menggunakan baris kode Anda dan kemudian saya mengunggah (salin / tempel) melalui konsol AWS. Terima kasih!
Diego D
79
Sebuah pemfile berisi sertifikat dan kunci pribadi. Tergantung pada format sertifikat / kunci Anda, tetapi mungkin sesederhana ini:
Jika Anda ingin file dimulai dengan -----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:
Pilihan lain adalah dengan meloloskan sertifikat non-ketat openssl x509. Ini akan menampilkan sertifikat PEM yang valid: cat certificate.crt | openssl x509 > certificate.pem
T0xicCode
Jika Anda ingin mendapatkan semuanya dari "BEGIN" hingga akhir file, itu adalah pekerjaan untuk sed. Khususnya, Anda menginginkan sesuatu seperti sed -n '/--BEGIN/,$p' cert.crtdalam kasus ini. Untuk menjelaskan bahwa: "-n" memberitahu sed untuk tidak mencetak apa pun secara default, dan kemudian ekspresi range /--BEGIN/,$membuat pperintah (print) berlaku untuk baris antara baris pertama yang berisi --BEGINdan akhir file ( $).
dannysauer
4
Saya mencoba untuk beralih dari GoDaddy ke mesin aplikasi. Apa triknya menggunakan baris ini:
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:
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" ..
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
Ini tidak berhasil untuk sayaAn error occurred (MalformedCertificate) when calling the UploadServerCertificate operation: Unable to parse certificate. Please ensure the certificate is in PEM format.
Adam Raudonis
4
Unduh sertifikat dari portal sementara oleh appleID,
Ekspor sertifikat dari gantungan kunci dan beri nama (Certificates.p12),
Buka terminal dan folder goto tempat Anda menyimpan file Certificates.p12 di atas,
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
.pem
ke.crt
dan.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
Untuk server.key, gunakan
openssl rsa
di tempatopenssl 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:
Saya akan merekomendasikan penamaan file dengan "includeprivatekey" untuk membantu Anda mengelola izin yang Anda simpan dengan file ini.
sumber
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:
Terima kasih NCZ
Sunting: Seperti yang dikatakan @floatingrock
Dengan AWS, jangan lupa untuk mengawali nama file dengan
file://
. Jadi akan terlihat seperti:http://docs.aws.amazon.com/cli/latest/reference/iam/upload-server-certificate.html
sumber
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:sumber
-bash: server.key.pem: Permission denied
Selain itu, jika Anda tidak ingin meminta passphrase, maka perlu menjalankan perintah berikut:
sumber
-----BEGIN RSA PRIVATE KEY-----
dan memiliki yang dimulai-----BEGIN ENCRYPTED PRIVATE KEY-----
, ini adalah perintah yang ingin Anda gunakan.ini adalah opsi terbaik untuk membuat file .pem
sumber
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.
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:
sumber
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/,$
membuatp
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:
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:
Kemudian saya menggunakan instruksi ini dari Trouble with Google Apps Custom Domain SSL , yaitu:
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.
sumber
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
Dan untuk menghapus unggahan gagal sebelumnya Anda bisa Anda lakukan
sumber
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
sumber
sumber