Tidak dapat memuat Kunci Pribadi. (Rutinitas PEM: PEM_read_bio: tidak ada garis start: pem_lib.c: 648: Mengharapkan: SETIAP KUNCI PRIBADI)

93

Saya memiliki file .key yang merupakan file kunci pribadi berformat PEM. Saya tidak membuat file ini tetapi saya mendapatkannya dari suatu tempat.

Saya ingin melihat hash MD5 dengan alat openssl seperti perintah di bawah ini.

openssl rsa -in server.key -modulus -noout

Tapi ini menghasilkan kesalahan di bawah ini.

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

Berikut beberapa asn1parse dari file .key.

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

 ...

Apakah ada hal lain yang bisa saya coba?

tkpl
sumber
2
Apa header / footer yang tepat dari file PEM? Anda bisa mendapatkan kesalahan ini jika Anda mengirim kunci publik. Selain itu, perintah yang Anda daftarkan tidak akan memberikan hash MD5. Ini akan memberikan modulus kunci.
gtrig
Saya pernah scpmenyalin file dari Windows ke Ubuntu. Untuk memperbaikinya, saya menghapus file di Ubuntu, membuat file kosong baru di sana, dan menggunakan vimlalu menempelkan konten yang benar.
Ryan

Jawaban:

65

Buka file kunci di Notepad ++ dan verifikasi pengkodeannya. Jika tertulis UTF-8-BOM maka ubah ke UTF-8. Simpan file dan coba lagi.

Robert L.
sumber
2
Bagaimana jika saya menggunakan mac?
Ernest Zamelczyk
6
Gunakan Visual Studio Code - Anda dapat dengan mudah mengubah pengkodean menggunakan toolbar bawah!
Luca Ghersi
2
Ya Tuhan! TERIMA KASIH! Saya tidak akan pernah mengetahuinya dengan coba-coba, memperbaiki masalah untuk saya!
Mikael Dyreborg Hansen
Ini untukku. Terima kasih!
Freeman Helmuth
3
GoDaddy menghasilkan kunci pribadi "generated-private-key.txt" yang diawali dengan BOM, yang menyebabkan masalah ini. Setidaknya di Mac, membuang teks kunci dengan cat tidak menampilkan BOM tetapi melihatnya dengan lebih sedikit. Saya menggunakan BBEdit untuk menghapus BOM, tetapi semua yang dapat mengubah format atau memotong empat byte pertama akan berfungsi.
Seth Noble
55

Saya mengubah header dan footer file PEM menjadi

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

dan

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

Akhirnya, berhasil!

tkpl
sumber
1
Anda juga dapat menambahkan -inform pemperintah untuk mendapatkan hasil yang sama. Mis openssl rsa -in server.key -modulus -noout -inform pem.
Simon Woodside
1
Periksa stackoverflow.com/questions/54994641/… jika itu menyelesaikan masalah Anda
qstack
Ada yang sudah bekerja dengan benar dengan format "buruk" (yaitu header yang tidak berubah), jadi, ini adalah solusi sementara, pasti akan merusak sesuatu yang sudah berfungsi dengan baik, seperti, proxy terbalik yang tidak mogok karena kekurangannya secara manual header dan footer yang diedit. Yipes!
alejandrob
32

file .key Anda berisi karakter ilegal. Anda dapat memeriksa file .key seperti ini:

# file server.key

output "server.key: UTF-8 Unicode (with BOM) text" berarti ini adalah teks biasa, bukan file kunci. Keluaran yang benar adalah "server.key: PEM RSA private key".

gunakan perintah di bawah ini untuk menghapus karakter ilegal:

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

New_server.key harus benar.

Untuk lebih jelasnya bisa klik disini terima kasih atas postingannya.

张 俊
sumber
1
file server.keyperintah ini membantu saya mengatasi masalah tersebut. Terima kasih.
itsHarshad
Perintah tail tampaknya telah menambahkan karakter pemformatan aneh ke file kunci saya. Tidak yakin mengapa ini terjadi.
ryanwebjackson
Ini dalam kombinasi dengan jawaban @tkpl tampaknya telah menghilangkan kesalahan bagi saya.
ryanwebjackson
Ini menghemat beberapa jam dan banyak rambut.
Felipe Gusmao
6
> I have a .key file which is PEM formatted private key file.
> ...
> Here's some asn1parse of the .key file...

Bahwa tampaknya OK dengan asn1parsemembuat saya percaya itu bukan PEM yang dikodekan.


Apakah ada hal lain yang bisa saya coba?

Karena tampaknya ASN.1, coba:

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

Perhatikan -inform DERuntuk beralih di antara pengkodean.

jww
sumber
6

Buat sertifikat CA

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

Hapus spasi apa pun di awal file .key.

johnnycardy.dll
sumber
5

Resolusi di pihak saya. Ubah Encoding ke UTF8 tanpa BOM

Kosmo Para
sumber
2

Saya menggunakan Windows 10 dan saya menyimpan kunci saya dengan pengkodean Windows1252 dan itu berhasil untuk saya. Pada pertanyaan StackOverflow lainnya, beberapa orang memperbaiki masalah ini dengan UTF-8 dengan BOM .

Dengan kata lain, itu mungkin file encoding.

Rafael ZB Bravo
sumber
1

Mungkin kunci privat itu sendiri tidak ada dalam file. Saya juga menghadapi masalah yang sama tetapi masalahnya adalah tidak ada kunci privat yang ada di file.

Dhruvil Shah
sumber
1

ini bisa terjadi jika Anda mencoba menggunakan kunci publik Anda untuk membuat sertifikat alih-alih kunci pribadi Anda. Anda harus menggunakan kunci pribadi

aris
sumber
0

Memiliki masalah yang sama hari ini, dan memperhatikan bahwa ini terjadi ketika pemilik / grup file bukan aplikasi yang berjalan yang membaca kunci. Mungkin masalah Anda juga.

Ionut Stoica
sumber
0

Tidak ada jawaban lain yang tampaknya benar dalam kasus saya, namun saya menemukan jawaban sebenarnya di sini

id_rsaFile saya sudah dalam format PEM, saya hanya perlu menambahkan .pemekstensi ke nama file.

Terimakasih untuk

Opsi yang memungkinkan untuk openssl rsa -informparameter adalah salah satu dari:PEM DER

Sebuah PEMfile yang disandikan adalah-teks biasa encoding bahwa sesuatu terlihat seperti:

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

Sedangkan DERadalah format pengkodean biner.

gregn3
sumber
0

Dalam kasus kami, yang menyebabkan masalah adalah kunci pribadi yang kami coba gunakan dienkripsi dengan frasa sandi.

Kami harus mendekripsi kunci privat menggunakan ssh-keygen -psebelum kami dapat menggunakan kunci privat dengan alat baris perintah openssl.

Paul Dejean
sumber
-6

Mengapa tidak menggunakan bot sertifikat

yum install epel-release

yum instal certbot-nginx

Memperoleh Sertifikat

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

Dylan B
sumber