Özel Anahtar yüklenemiyor. (PEM rutinleri: PEM_read_bio: başlangıç ​​satırı yok: pem_lib.c: 648: Beklenen: HERHANGİ BİR ÖZEL ANAHTAR)


92

PEM biçimli özel anahtar dosyası olan bir .key dosyam var. Bu dosyayı ben yapmadım ama bunu bir yerden aldım.

MD5 hash'ini aşağıdaki komut gibi openssl aracıyla görmek istedim.

openssl rsa -in server.key -modulus -noout

Ancak bu, aşağıdaki hatayı oluşturur.

unable to load Private Key
13440:error:0906D06C:PEM routines:PEM_read_bio:no start line:.\crypto\pem\pem_lib.c:648:Expecting: ANY PRIVATE KEY

.Key dosyasının bazı asn1parse'leri.

openssl asn1parse -in server.key
0:d=0  hl=4 l= 603 cons: SEQUENCE
4:d=1  hl=2 l=   1 prim: INTEGER           :00
7:d=1  hl=3 l= 129 prim: INTEGER           :C141201603899993919CBAA56985E9C7
C6A2AF713A02F5FE88D38CEFBED9304599689280B84B0AB577A9719CA20DDA1246A894AF397A2C57
EE5A582B036CC367E3667454DCD82DBDBF187C35FE39F61C71B517DDDF576F5471B4EC2E045E0F9D
619F5616C4E832F00CBD0DBF41B4BA3CBC4B4B603AE1FE61965917DA732E0DEF
139:d=1  hl=2 l=   3 prim: INTEGER           :010001
144:d=1  hl=3 l= 128 prim: INTEGER           :1687B9AE67562CEDEBDD7A531B84CDB7
093CE138519B93C34B7F626076FF0A262B16EA71904ACB6251A39307C04ADE202055BA13DD9F1539
6123EE408183361A9BC08B9413FA360EA928E48CC3F52B33ACF2980758F02BA2139F652F30A257C2
2E45D7C25835FC4D22B9ECECC12AB632318D4F47E1EBDAD9781B96BCFF03A2D1

 ...

Deneyebileceğim başka bir şey var mı?


2
PEM dosyasının tam üstbilgisi / altbilgisi nedir? Açık bir anahtar gönderiyorsanız bu hatayı alabilirsiniz. Ayrıca, listelediğiniz komut MD5 hash vermeyecektir. Anahtarın modülünü verecektir.
gtrig

Ben kullanmıştı scpUbuntu Windows dosya kopyalama. Düzeltmek için Ubuntu'daki dosyayı sildim, orada yeni bir boş dosya oluşturdum ve kullandım vimve doğru içeriğe yapıştırdım.
Ryan

Yanıtlar:


64

Anahtar dosyasını Notepad ++ ile açın ve kodlamayı doğrulayın. UTF-8-BOM yazıyorsa, UTF-8 olarak değiştirin. Dosyayı kaydedin ve tekrar deneyin.


2
Ya bir mac kullanıyorsam?
Ernest Zamelczyk

6
Visual Studio Code kullanın - alttaki araç çubuğunu kullanarak kodlamayı kolayca değiştirebilirsiniz!
Luca Ghersi

2
Aman Tanrım! TEŞEKKÜR EDERİM! Bunu deneme yanılma yoluyla asla anlayamazdım, sorunu benim için çözemezdim!
Mikael Dyreborg Hansen

Bu benim içindi. Teşekkürler!
Freeman Helmuth

3
GoDaddy, bir malzeme listesinin önüne eklenmiş "oluşturulmuş-özel-anahtar.txt" özel anahtarları üretir ve bu da bu soruna neden olur. En azından bir Mac'te, anahtar metni kedi ile birlikte dökmek, BOM'u görüntülemiyordu, ancak ona daha az görüntüyle bakıyordu. Malzeme Listesini kaldırmak için BBEdit'i kullandım, ancak formatı değiştirebilen veya ilk dört baytı kesebilen herhangi biri işe yarayacak.
Seth Noble

55

PEM dosyasının üstbilgi ve altbilgisini şu şekilde değiştirdim:

-----BEGIN RSA PRIVATE KEY-----

ve

-----END RSA PRIVATE KEY-----

Sonunda işe yarıyor!


1
-inform pemAynı sonucu almak için komuta da ekleyebilirsiniz . Örn openssl rsa -in server.key -modulus -noout -inform pem.
Simon Woodside

1
Kontrol stackoverflow.com/questions/54994641/... sizin sorunu çözmeyi
qstack

Bir şey zaten "kötü" formatla (yani değişmemiş başlıklar) doğru şekilde çalışıyor, bu yüzden bu geçici bir çözüm, zaten düzgün çalışan bir şeyi kırmak için, manuel olarak eksiklikten dolayı çökmeyen bir ters proxy gibi. düzenlenmiş üstbilgiler ve altbilgiler. Yipes!
alejandrob

32

.key dosyanız geçersiz karakterler içeriyor. .key dosyasını şu şekilde kontrol edebilirsiniz:

# file server.key

"server.key: UTF-8 Unicode (BOM ile) metin" çıktısı, bunun bir anahtar dosyası değil düz metin olduğu anlamına gelir. Doğru çıktı "server.key: PEM RSA özel anahtarı" olmalıdır.

geçersiz karakterleri kaldırmak için aşağıdaki komutu kullanın:

# tail -c +4 server.key > new_server.key

New_server.key doğru olmalıdır.

Daha fazla detay için buraya tıklayabilirsiniz , gönderi için teşekkürler.


1
file server.keybu komut sorunu anlamama yardımcı oldu. Teşekkürler.
itsHarshad

Tail komutu anahtar dosyama garip biçimlendirme karakterleri eklemiş görünüyor. Bunun neden olduğundan emin değilim.
ryanwebjackson

Bu, @tkpl cevabıyla birlikte benim için hataları ortadan kaldırmış gibi görünüyor.
ryanwebjackson

Bu bana birkaç saat ve çok fazla saç kazandırdı.
Felipe Gusmao

6
> I have a .key file which is PEM formatted private key file.
> ...
> Here's some asn1parse of the .key file...

İyi görünmesi asn1parse, PEM kodlu olmadığına inanmamı sağlıyor .


Deneyebileceğim başka bir şey var mı?

ASN.1 gibi göründüğü için şunu deneyin:

$ openssl rsa -in server.key -inform DER -modulus -noout

-inform DERKodlamalar arasında geçiş yapmaya dikkat edin .


6

CA sertifikası oluştur

openssl genrsa -out privateKey.pem 4096
openssl req -new -x509 -nodes -days 3600 -key privateKey.pem -out caKey.pem


5

Benim tarafımda çözünürlük. Kodlamayı BOM olmadan UTF8 olarak değiştirin


2

Windows 10 kullanıyorum ve anahtarımı Windows1252 kodlamasıyla kaydettim ve benim için çalıştı. Başka bir StackOverflow sorusunda, bazı insanlar bunu BOM ile UTF-8 ile düzeltti .

Başka bir deyişle, dosya kodlaması olabilir.


1

Özel anahtarın kendisi dosyada mevcut olmayabilir.Ben de aynı sorunla karşılaştım ancak sorun şu ki dosyada özel anahtar yok.


1

bu, özel anahtarınız yerine sertifika oluşturmak için genel anahtarınızı kullanmaya çalışıyorsanız olabilir. özel anahtar kullanmalısın


0

Bugün aynı sorunu yaşadım ve bunun, dosyanın sahibi / grubu, anahtarı okuyan çalışan bir uygulama olmadığında meydana geldiğini fark etti. Belki senin de sorunun.


0

Benim durumumda diğer cevapların hiçbiri doğru görünmüyordu, ancak gerçek cevabı burada buldum

Benim id_rsadosya Sadece eklemek için gerekli, PEM biçiminde zaten .pemdosya adına uzantıyı.

Sayesinde

openssl rsa -informParametre için olası seçenekler şunlardan biridir:PEM DER

Bir PEMkodlanmış dosya gibi o bakışlar şey kodlayan bir düz metin geçerli:

-----BEGIN RSA PRIVATE KEY-----
MIGrAgEAAiEA0tlSKz5Iauj6ud3helAf5GguXeLUeFFTgHrpC3b2O20CAwEAAQIh
ALeEtAIzebCkC+bO+rwNFVORb0bA9xN2n5dyTw/Ba285AhEA9FFDtx4VAxMVB2GU
QfJ/2wIRANzuXKda/nRXIyRw1ArE2FcCECYhGKRXeYgFTl7ch7rTEckCEQDTMShw
8pL7M7DsTM7l3HXRAhAhIMYKQawc+Y7MNE4kQWYe
-----END RSA PRIVATE KEY-----

While DER, ikili bir kodlama formatıdır.


0

Bizim durumumuzda soruna neden olan, kullanmaya çalıştığımız özel anahtarın bir parola ile şifrelenmiş olmasıdır.

ssh-keygen -pOpenssl komut satırı aracıyla özel anahtarı kullanmadan önce özel anahtarın şifresini çözmek zorunda kaldık.


-6

Neden sertifika bot kullanmıyorsunuz?

yum, epel sürümünü yükle

yum install certbot-nginx

Bir Sertifika Alma

certbot --nginx -d example.com -d www.example.com

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.