2013-07-18 31 views
67

Önce sorumu açıklamama izin verin. Bir sertifikayı aldım ve CSR ve özel anahtarı oluşturmak için aşağıdaki biçimi kullanılır: Ben server.key dosyayı açtığınızdaÖzel anahtar RSA özel anahtarına nasıl dönüştürülür?

openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr 

, bunun ile başlar görüyoruz "----- BEGIN ÖZEL ANAHTAR ----- "

Sunucumun SSL sertifikasını kullanıyorum ve her şey yolunda görünüyor.

Şimdi aynı sertifikayı AWS IAM'a yüklemek istiyorum, böylece beanstalk yük dengeleyici için kullanabilirim. Ben http://docs.aws.amazon.com/IAM/latest/UserGuide/InstallCert.html#SubmitCSRCertAuth

iam-servercertupload -b public_key_certificate_file -k privatekey.pem -s certificate_object_name 

ben sertifika dosyası adlarını değiştirin bu aws dokümanınızdan aşağıdaki komutu kullanın gerekli ama bu hatayı almaya devam: "400 MalformedCertificate Geçersiz Private Key"

ilginç şey, aws doc sayfasında, örnek özel anahtar onlar

mi "-------- RSA Özel Anahtarı ------- başlayın" ile başlar gösteriyor ki özel anahtarımı openssl kullanarak RSA özel anahtarına dönüştürmenin bir yolu var mı?

cevap

105

OpenSSL'nin daha yeni sürümleri, BEGIN PRIVATE KEY özel anahtar içerdiğinden, anahtar türünü tanımlayan bir OID (bu PKCS8 biçimi olarak bilinir) derler. Eski stil anahtarı almak için (PKCS1 veya geleneksel OpenSSL formatında ya da bilinir) bunu yapabilirsiniz:

openssl rsa -in server.key -out server_new.key 

Alternatif olarak, bir PKCS1 anahtara sahip ve isterseniz PKCS8:

openssl pkcs8 -topk8 -nocrypt -in privkey.pem 
+0

Mükemmel !! Bir çekicilik gibi çalıştı. Çok teşekkürler! –

+1

Aynı zamanda, aynı anahtarla çalışan saf SSH çalışırken Cyberduck gibi araçlardan 'Geçersiz PEM yapısı', ----- BEGIN ... 'eksik' gibi garip hata iletileri almak için de bir çözümdür. – Daniel

+0

Bu benim için çalıştı. Windows kullanıcıları OpenSSL'i buradan edinebilirler: http://slproweb.com/products/Win32OpenSSL.html – ben

14

Bu olabilir bazı yardım (kelimenin tam anlamıyla komutları tersbölülerle '\' dışarı yazmıyorum, onlar "her şey tek bir satırda olmak zorunda" olduğunu belirtmek içindir):

Which Command to Apply When

o s tüm komutların (gri renkte) herhangi bir anahtar dosyasını (yeşil renkte) "in" argümanı olarak aldığını söyler. Hangisi güzel.

Burada daha kolay kopyalama yapıştırmak için tekrar komutlar şunlardır:

openssl rsa            -in $FF -out $TF 
openssl rsa -aes256          -in $FF -out $TF 
openssl pkcs8 -topk8 -nocrypt        -in $FF -out $TF 
openssl pkcs8 -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA256 -in $FF -out $TF 

ve

openssl rsa -check -in $FF 
openssl rsa -text -in $FF 
+0

Görüntünün "graphml" dosyası (örneğin [yworks yed] (https://www.yworks.com/products/yed) ile düzenlenebilir) burada bulunabilir. ] (https://s3-eu-west-1.amazonaws.com/lohlxadsvl/openssl_commands.graphml) –

İlgili konular