Không thể tải Khóa cá nhân. (Quy trình PEM: PEM_read_bio: không có dòng bắt đầu: pem_lib.c: 648: Mong đợi: BẤT KỲ TỪ KHÓA RIÊNG TƯ NÀO)


93

Tôi có một tệp .key là tệp khóa cá nhân được định dạng PEM. Tôi không tạo tệp này nhưng tôi nhận được cái này từ đâu đó.

Tôi muốn xem mã băm MD5 của nó bằng công cụ openssl như lệnh dưới đây.

openssl rsa -in server.key -modulus -noout

Nhưng điều này tạo ra lỗi dưới đây.

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

Đây là một số asn1parse của tệp .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

 ...

Tôi có thể thử thêm gì nữa không?


2
Đầu trang / chân trang chính xác của tệp PEM là gì? Bạn có thể gặp lỗi này nếu bạn đang gửi khóa công khai. Ngoài ra, lệnh bạn liệt kê sẽ không cung cấp mã băm MD5. Nó sẽ cung cấp mô-đun của khóa.
gtrig

Tôi đã từng scpsao chép tệp từ Windows sang Ubuntu. Để khắc phục, tôi đã xóa tệp trên Ubuntu, tạo một tệp trống mới ở đó và sử dụng vimrồi dán nội dung chính xác.
Ryan

Câu trả lời:


66

Mở tệp khóa trong Notepad ++ và xác minh mã hóa. Nếu nó cho biết UTF-8-BOM thì hãy thay đổi nó thành UTF-8. Lưu tệp và thử lại.


2
Nếu tôi đang sử dụng máy Mac thì sao?
Ernest Zamelczyk

6
Sử dụng Visual Studio Code - bạn có thể dễ dàng thay đổi mã hóa bằng cách sử dụng thanh công cụ dưới cùng!
Luca Ghersi

2
Chúa ơi! CẢM ƠN BẠN! Tôi sẽ không bao giờ tìm ra điều đó bằng cách thử và sai, đã khắc phục sự cố cho tôi!
Mikael Dyreborg Hansen

Đây là nó cho tôi. Cảm ơn!
Freeman Helmuth

4
GoDaddy tạo ra các khóa riêng tư "created-private-key.txt" có tiền tố là BOM, nguyên nhân gây ra sự cố này. Ít nhất là trên máy Mac, việc kết xuất văn bản khóa bằng mèo không hiển thị BOM nhưng việc xem xét nó với ít hơn. Tôi đã sử dụng BBEdit để xóa BOM, nhưng bất kỳ thứ nào có thể thay đổi định dạng hoặc cắt bỏ bốn byte đầu tiên sẽ hoạt động.
Seth Noble

55

Tôi đã thay đổi đầu trang và chân trang của tệp PEM thành

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

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

Cuối cùng, nó hoạt động!


1
Bạn cũng có thể thêm -inform pemvào lệnh để có được kết quả tương tự. Vd openssl rsa -in server.key -modulus -noout -inform pem.
Simon Woodside

1
Kiểm tra stackoverflow.com/questions/54994641/… nếu nó giải quyết được vấn đề của bạn
qstack

Một cái gì đó đã hoạt động chính xác với định dạng "xấu" (tức là tiêu đề không thay đổi), vì vậy, đây là một giải pháp tạm thời, bị ràng buộc để phá vỡ một cái gì đó đã hoạt động tốt, chẳng hạn như một proxy ngược không bị lỗi do thiếu những thứ đó theo cách thủ công đầu trang và chân trang được chỉnh sửa. Yipes!
alejandrob

32

tệp .key của bạn chứa các ký tự không hợp lệ. bạn có thể kiểm tra tệp .key như sau:

# file server.key

đầu ra "server.key: UTF-8 Unicode (with BOM) text" có nghĩa là nó là một văn bản thuần túy, không phải là một tệp khóa. Đầu ra đúng phải là "server.key: PEM RSA private key".

sử dụng lệnh dưới đây để xóa các ký tự không hợp lệ:

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

New_server.key phải chính xác.

Để biết thêm chi tiết, bạn có thể nhấp vào đây , cảm ơn cho bài viết.


1
file server.keylệnh này đã giúp tôi giải quyết vấn đề. Cảm ơn.
itHarshad

Lệnh tail dường như đã thêm các ký tự định dạng lạ vào tệp khóa của tôi. Không chắc tại sao lại như vậy.
ryanwebjackson

Điều này kết hợp với câu trả lời @tkpl dường như đã loại bỏ lỗi cho tôi.
ryanwebjackson

Điều này giúp tôi tiết kiệm được vài giờ và rất nhiều tóc.
Felipe Gusmao

7

Tạo chứng chỉ CA

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

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

Việc nó có vẻ ổn asn1parsekhiến tôi tin rằng nó không được mã hóa PEM.


Tôi có thể thử thêm gì nữa không?

Vì nó có vẻ là ASN.1, hãy thử:

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

Chú ý -inform DERchuyển đổi giữa các bảng mã.



5

Giải quyết về phía tôi. Thay đổi mã hóa thành UTF8 mà không cần BOM


2

Tôi đang sử dụng Windows 10 và tôi đã lưu khóa của mình bằng mã hóa Windows1252 và nó phù hợp với tôi. Trong một câu hỏi khác của StackOverflow, một số người đã sửa lỗi này bằng UTF-8 với BOM .

Nói cách khác, nó có thể là mã hóa tệp.


1

Có thể bản thân khóa cá nhân không có trong tệp. Tôi cũng gặp phải vấn đề tương tự nhưng vấn đề là không có khóa riêng trong tệp.


1

điều này có thể xảy ra nếu bạn đang cố gắng sử dụng khóa công khai của mình để tạo chứng chỉ thay vì khóa cá nhân. bạn nên sử dụng khóa riêng


0

Hôm nay gặp vấn đề tương tự và nhận thấy rằng điều này xảy ra khi chủ sở hữu / nhóm tệp không phải là ứng dụng đang chạy đọc khóa. Có lẽ cũng là vấn đề của bạn.


0

Không có câu trả lời nào khác có vẻ đúng trong trường hợp của tôi, tuy nhiên tôi đã tìm thấy câu trả lời thực sự ở đây

id_rsaTệp của tôi đã ở định dạng PEM, tôi chỉ cần thêm .pemphần mở rộng vào tên tệp.

Nhờ vào

Các tùy chọn khả thi cho openssl rsa -informtham số là một trong số:PEM DER

Một PEMtập tin được mã hóa là một đồng bằng văn bản mã hóa mà trông giống như sau:

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

While DERlà một định dạng mã hóa nhị phân.


0

Trong trường hợp của chúng tôi, điều gây ra sự cố là khóa riêng tư mà chúng tôi đang cố gắng sử dụng đã được mã hóa bằng cụm mật khẩu.

Chúng tôi phải giải mã khóa cá nhân bằng cách sử dụng ssh-keygen -ptrước khi có thể sử dụng khóa cá nhân bằng công cụ dòng lệnh openssl.


-6

Tại sao không sử dụng bot chứng chỉ

yum cài đặt epel-release

yum cài đặt certbot-nginx

Lấy chứng chỉ

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.