Özel anahtarı RSA özel anahtarına nasıl dönüştürebilirim?


99

Önce sorumu açıklamama izin verin. Bir CA'dan bir sertifika satın aldım ve csr'yi ve özel anahtarı oluşturmak için aşağıdaki biçimi kullandım:

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

Server.key dosyasını açtığımda, "----- BEGIN PRIVATE KEY -----" ile başladığını görüyorum

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

Şimdi, beanstalk yük dengeleyici tarafından kullanabilmek için aynı sertifikayı AWS IAM'ye yüklemek istiyorum. Bu aws doc http://docs.aws.amazon.com/IAM/latest/UserGuide/InstallCert.html#SubmitCSRCertAuth adresinden aşağıdaki komutu kullanıyorum

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

Sertifika dosya adlarını gerektiği gibi değiştiriyorum ancak şu hatayı alıyorum: "400 MalformedCertificate Invalid Private Key."

İlginç olan, aws belge sayfasında, gösterdikleri örnek özel anahtarın "------- RSA Özel Anahtarını Başlat --------" ile başlamasıdır.

Özel anahtarımı openssl kullanarak RSA özel anahtarına dönüştürmenin bir yolu var mı?

Yanıtlar:


158

OpenSSL'nin daha yeni sürümleri BEGIN PRIVATE KEY, özel anahtar + anahtar türünü tanımlayan bir OID (bu, PKCS8 formatı olarak bilinir) içerdikleri için söyler. Eski stil anahtarı (PKCS1 veya geleneksel OpenSSL formatı olarak bilinir) almak için şunu yapabilirsiniz:

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

Alternatif olarak, bir PKCS1 anahtarınız varsa ve PKCS8 istiyorsanız:

openssl pkcs8 -topk8 -nocrypt -in privkey.pem

1
Bu aynı zamanda, Invalid PEM structure, '-----BEGIN...' missing.aynı anahtara sahip saf SSH çalışırken, Cyberduck gibi araçlardan gelen tuhaf hata mesajlarını almak için bir çözümdür .
Daniel

1
Teşekkür ederim! Bunu A client error (MalformedCertificate) occurred when calling the UploadServerCertificate operation: Unable to parse certificate. Please ensure the certificate is in PEM format.özel anahtarımla alıyordum ve çalıştırıyordum, düzeltildi!
philfreo

4
Referans için: Daha eksiksiz bir açıklama için stackoverflow.com/q/20065304/53974 adresine bakın .
Blaisorblade

2
bunun tersini nasıl yaparız? Bir Private Keydan ihtiyacım var RSA Private Key?
edthethird

2
openssl pkcs8 -topk8 -nocrypt -in privkey.pemSTDOUT'a bir PKCS8 yazacak
Paul Kehrer

26

Bu biraz yardımcı olabilir (komutlarda ters eğik çizgi '\' harfini yazmayın, "her şeyin tek satırda olması gerektiğini" belirtmek içindir):

Hangi Komut Ne Zaman Uygulanacak

Görünüşe göre tüm komutlar (gri renkte) herhangi bir anahtar dosyasını (yeşil) "in" argüman olarak alıyor. Hangisi güzel.

Kopyalayıp yapıştırmayı kolaylaştırmak için yine komutlar:

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

1
Resmin "graphml" dosyası ( örneğin yworks yed ile düzenlenebilir ) burada
David Tonhofer

12

"BEGIN OPENSSH PRIVATE KEY" i "BEGIN RSA PRIVATE KEY" e dönüştürmek için

ssh-keygen -p -m PEM -f ~/.ssh/id_rsa

1
Bu tam olarak ihtiyacım olan şey. Teşekkürler!
RossD

Bu davranış, dolaylı olarak ssh-keygen kılavuz sayfasında belgelenmiştir, ancak -m bayrağının kullanımı aslında -i ve -o
ikrabbe
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.