개인 키를로드 할 수 없습니다. (PEM 루틴 : PEM_read_bio : no start line : pem_lib.c : 648 : 예상 : ANY PRIVATE KEY)


92

PEM 형식의 개인 키 파일 인 .key 파일이 있습니다. 이 파일을 만들지 않았지만 어딘가에서 가져 왔습니다.

아래 명령과 같은 openssl 도구로 MD5 해시를보고 싶었습니다.

openssl rsa -in server.key -modulus -noout

그러나 이것은 아래의 오류를 생성합니다.

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 파일의 asn1parse입니다.

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

 ...

더 시도 할 수있는 것이 있습니까?


2
PEM 파일의 정확한 머리글 / 바닥 글은 무엇입니까? 공개 키로 보내는 경우이 오류가 발생할 수 있습니다. 또한 나열한 명령은 MD5 해시를 제공하지 않습니다. 키의 계수를 제공합니다.
gtrig

scpWindows에서 Ubuntu로 파일을 복사하는 데 사용 되었습니다. 이 문제를 해결하기 위해 Ubuntu에서 파일을 삭제하고 거기에 빈 파일을 새로 만든 vim다음 올바른 내용을 사용 하고 붙여 넣었습니다.
라이언

답변:


63

Notepad ++에서 키 파일을 열고 인코딩을 확인합니다. UTF-8-BOM으로 표시되면 UTF-8로 변경하십시오. 파일을 저장하고 다시 시도하십시오.


2
Mac을 사용하는 경우 어떻게합니까?
Ernest Zamelczyk

6
Visual Studio Code 사용-하단 도구 모음을 사용하여 인코딩을 쉽게 변경할 수 있습니다!
Luca Ghersi

2
오 맙소사! 감사합니다! 나는 시행 착오로 그것을 알아 내지 못했을 것입니다.
Mikael Dyreborg Hansen

이것은 나를위한 것이었다. 감사!
Freeman Helmuth

3
GoDaddy는 BOM이 접두사로 붙은 "generated-private-key.txt"개인 키를 생성하므로이 문제가 발생합니다. 적어도 Mac에서는 cat으로 키 텍스트를 덤프하면 BOM이 표시되지 않지만 더 적게 표시됩니다. BBEdit를 사용하여 BOM을 제거했지만 형식을 변경하거나 처음 4 바이트를 잘라낼 수있는 모든 것이 작동합니다.
Seth Noble

55

PEM 파일의 머리글과 바닥 글을 다음과 같이 변경했습니다.

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

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

마지막으로 작동합니다!


1
-inform pem명령에 추가 하여 동일한 결과를 얻을 수도 있습니다 . 예 openssl rsa -in server.key -modulus -noout -inform pem.
Simon Woodside

1
stackoverflow.com/questions/54994641/…을 확인 하십시오. 문제가 해결되는지 확인하십시오
qstack

어떤 것이 "나쁜"형식 (예 : 변경되지 않은 헤더)으로 이미 올바르게 작동하고 있습니다. 따라서 이것은 수동으로 부족한 경우 충돌하지 않는 역방향 프록시와 같이 이미 잘 작동하던 것을 중단하는 임시 해결책입니다. -편집 된 머리글 및 바닥 글. 이프!
alejandrob

32

.key 파일에 잘못된 문자가 있습니다. 다음과 같이 .key 파일을 확인할 수 있습니다.

# file server.key

"server.key : UTF-8 유니 코드 (BOM 포함) 텍스트"출력은 키 파일이 아니라 일반 텍스트임을 의미합니다. 올바른 출력은 "server.key : PEM RSA 개인 키"여야합니다.

아래 명령을 사용하여 잘못된 문자를 제거하십시오.

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

new_server.key가 정확해야합니다.

자세한 내용을 보려면 여기 를 클릭 하십시오 . 게시물에 감사드립니다.


1
file server.key이 명령은 문제를 해결하는 데 도움이되었습니다. 감사.
itsHarshad

tail 명령이 내 키 파일에 이상한 형식화 문자를 추가 한 것 같습니다. 왜 그런지 모르겠습니다.
ryanwebjackson

이것은 @tkpl 대답과 함께 나를 위해 오류를 제거 한 것 같습니다.
ryanwebjackson

이로 인해 몇 시간과 머리카락이 많이 절약되었습니다.
Felipe Gusmao

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

괜찮아 보이는 것은 PEM 인코딩 asn1parse아니라고 믿게 만듭니다.


더 시도 할 수있는 것이 있습니까?

ASN.1로 보이므로 다음을 시도하십시오.

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

-inform DER인코딩간에 전환 하려면 을 확인하세요.


6

CA 인증서 만들기

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



2

저는 Windows 10을 사용 중이며 Windows1252 인코딩으로 키를 저장 했으며 저에게 효과적 이었습니다. 또 다른 StackOverflow 질문에서 일부 사람들은 BOM 이있는 UTF-8로 이것을 수정했습니다 .

즉, 파일 인코딩 일 수 있습니다.


1

개인 키 자체가 파일에 존재하지 않을 수 있으며 동일한 문제에 직면했지만 문제는 파일에 개인 키가 없다는 것입니다.


1

이는 개인 키 대신 인증서를 생성하기 위해 공개 키를 사용하려는 경우 발생할 수 있습니다. 개인 키를 사용해야합니다


0

오늘도 같은 문제가 발생했으며 파일 소유자 / 그룹이 키를 읽는 앱을 실행하지 않는 경우에 발생합니다. 어쩌면 당신의 문제 일 수도 있습니다.


0

내 경우에는 다른 답변이 정확하지 않았지만 여기서 실제 답변을 찾았습니다.

id_rsa파일은 이미 PEM 형식이므로 .pem파일 이름에 확장자를 추가하면 됩니다.

덕분에

openssl rsa -inform매개 변수에 가능한 옵션 은 다음 중 하나입니다.PEM DER

PEM인코딩 된 파일은 같은 그 모습에 무언가를 암호화하는 일반 텍스트입니다 :

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

while DER은 바이너리 인코딩 형식입니다.


0

우리의 경우 문제의 원인은 사용하려는 개인 키가 암호로 암호화 되었기 때문입니다.

ssh-keygen -popenssl 명령 줄 도구에서 개인 키를 사용하려면 먼저 개인 키를 해독해야했습니다 .


-6

cetificate 봇을 사용하지 않는 이유

yum 설치 epel 릴리스

yum certbot-nginx 설치

인증서 얻기

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.