SSL sertifikasından nasıl PEM dosyası oluşturabilirim?
Bunlar mevcut dosyalarım:
.crt
server.csr
server.key
SSL sertifikasından nasıl PEM dosyası oluşturabilirim?
Bunlar mevcut dosyalarım:
.crt
server.csr
server.key
Yanıtlar:
Anahtarlarınız zaten PEM biçiminde olabilir, ancak yalnızca .crt veya .key ile adlandırılmış olabilir.
Dosyanın içeriği ile başlıyorsa -----BEGIN
ve bir metin düzenleyicisinde okuyabiliyorsanız:
Dosya, ikili biçimde değil, ASCII'de okunabilen base64 kullanır. Sertifika zaten PEM biçiminde. Uzantıyı .pem olarak değiştirmeniz yeterlidir.
Dosya ikili dosyadaysa:
Server.crt için şunu kullanırsınız:
openssl x509 -inform DER -outform PEM -in server.crt -out server.crt.pem
Server.key openssl rsa
için yerine kullanın openssl x509
.
Server.key büyük olasılıkla özel anahtarınızdır ve .crt dosyası döndürülen, imzalanan x509 sertifikasıdır.
Bu bir Web sunucusu içinse ve ayrı bir özel ve genel anahtar yüklemeyi belirleyemiyorsanız:
İki dosyayı birleştirmeniz gerekebilir. Bu kullanım için:
cat server.crt server.key > server.includesprivatekey.pem
Bu dosyada sakladığınız izinleri yönetmenize yardımcı olması için "includeprivatekey" ile dosya adlandırmayı öneririm.
cat server.crt server.key > server.pem
açık yorumu kendi çizgisine koymayacak bir kafa yukarı , ki bu bir gereklilik gibi görünüyor. Kurye postası bana cehennem verdi ve neyin yanlış gittiğini anlamak saatlerimi aldı.
server.crt server.key > server.includesprivatekey.pem
haproxy 1.5 ile SSL için yararlı olduğunu söylemek bir yumru .
Bunu AWS ELB için yapmam gerekiyordu. Diyalog tarafından defalarca dövüldükten sonra, nihayet benim için işe yaradı:
openssl rsa -in server.key -text > private.pem
openssl x509 -inform PEM -in server.crt > public.pem
Teşekkürler NCZ
Düzenleme: @floatingrock'un dediği gibi
AWS ile dosya adının başına başlamayı unutmayın file://
. Yani şöyle görünecek:
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://
. Yani şöyle görünecek:aws iam upload-server-certificate --server-certificate-name blah --certificate-body file://~/Desktop/server.crt --private-key file://~/Desktop/private.key --path /cloudfront/static/
Bir pem
dosya sertifikayı ve özel anahtarı içerir. Sertifikanızın / anahtarınızın biçimine bağlıdır, ancak muhtemelen bu kadar basittir:
cat server.crt server.key > server.pem
-bash: server.key.pem: Permission denied
Ayrıca, bir parola istemesini istemiyorsanız, aşağıdaki komutu çalıştırmanız gerekir:
openssl rsa -in server.key -out server.key
-----BEGIN RSA PRIVATE KEY-----
ve bununla başlayan bir dosya istiyorsanız -----BEGIN ENCRYPTED PRIVATE KEY-----
, bu komut kullanmak istediğiniz komuttur.
Ne gözlemledim: sertifika oluşturmak için openssl kullanırsanız, crt dosyasında hem metin bölümünü hem de base64 sertifika bölümünü yakalar. Katı pem formatı ( wiki tanımı ) dosyanın BEGIN ve END ile başlayıp bitmesi gerektiğini söylüyor .
.pem - (Gizliliği Artırılmış Posta) Base64 kodlu DER sertifikası, "----- BAŞLANGIÇ BELGESİ -----" ve "----- SON SERTİFİKA -----"
Bu yüzden katı pem formatı bekleyen bazı kütüphanelerde (java ile karşılaştım), oluşturulan crt doğrulamayı 'geçersiz pem formatı' olarak başarısız olur.
Çizgileri BEGIN / END CERTIFICATE ile kopyalayıp grep etseniz ve bir cert.pem dosyasına yapıştırsanız bile çalışmalıdır.
İşte yaptığım, çok temiz değil, ama benim için çalışıyor, temelde BEGIN satırından başlayarak metni filtreler:
grep -A 1000 BEGIN cert.crt> cert.pem
openssl x509
. Geçerli bir PEM sertifikası cat certificate.crt | openssl x509 > certificate.pem
sed -n '/--BEGIN/,$p' cert.crt
bu durumda olduğu gibi bir şey istersiniz . Açıklamak için: "-n" varsayılan olarak hiçbir şey yazdırmıyor sed ve ardından aralık ifadesi söyler /--BEGIN/,$
yapar p
komutu (baskı) içeren ilk çizgi arasındaki çizgileri için geçerlidir --BEGIN
ve dosyanın sonuna ( $
).
Godaddy'den uygulama motoruna geçmeye çalışıyordum. Hile bu çizgiyi ne kullanıyordu:
openssl req -new -newkey rsa:2048 -nodes -keyout name.unencrypted.priv.key -out name.csr
Tam olarak olduğu gibi, ancak alan adımla adı değiştirmek (gerçekten önemli değil)
Ortak ad / kuruluşla ilgili tüm soruları www.name.com olarak cevapladım.
Sonra csr'yi açtım, kopyaladım, git babaya yapıştırdım, sonra indirdim, sıkıştırmayı açtım, terminal ile sıkıştırılmamış klasöre gittik ve girdim:
cat otherfilegodaddygivesyou.crt gd_bundle-g2-g1.crt > name.crt
Sonra , Google Apps Özel Alan Adı SSL ile Sorun'dan bu talimatları kullandım , bunlar:
openssl rsa -in privateKey.key -text > private.pem
openssl x509 -inform PEM -in www_mydomain_com.crt > public.pem
aynen olduğu gibi, privateKey.key yerine name.unencrypted.priv.key kullandım ve www_mydomain_com.crt yerine name.crt kullandım
Sonra public.pem'i "PEM kodlu X.509 sertifikası" için yönetici konsoluna yükledim ve "Şifrelenmemiş PEM kodlu RSA özel anahtarı" için private.pem'i yükledim.
.. Ve sonunda işe yaradı.
AWS'ye bir GoDaddy sertifikası yüklemeye çalışırken birkaç kez başarısız oldum, ama sonunda oldukça basitti. Hiçbir şeyi .pem'e dönüştürmeye gerek yok. Zincir parametresine GoDaddy paket sertifikasını eklediğinizden emin olmanız gerekir, örn.
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
Ve önceki başarısız yüklemenizi silmek için şunları yapabilirsiniz:
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.
Aşağıdaki komutları çalıştırın:
a) openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes
,
b) openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts
openssl pkcs12 - YOUR_CERTIFICATE.p12 içinde-YOUR_CERTIFICATE.pem -nodes -clcerts
.pem
için.crt
ve.key
.