秘密鍵を読み込めません。(PEMルーチン:PEM_read_bio:開始行なし:pem_lib.c:648:期待:任意の秘密鍵)


94

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 2013

私は以前scp、ファイルをWindowsからUbuntuにコピーしていました。それを修正するために、Ubuntuでファイルを削除し、そこで新しい空のファイルを作成し、使用vimして正しい内容で貼り付けました。
ライアン

回答:


73

キーファイルをNotepad ++で開き、エンコーディングを確認します。UTF-8-BOMと表示されている場合は、UTF-8に変更します。ファイルを保存して、再試行してください。


2
Macを使用している場合はどうなりますか?
ErnestZamelczyk19年

6
Visual Studio Codeを使用します-下部のツールバーを使用して、エンコーディングを簡単に変更できます!
LucaGhersi20年

2
なんてこった!ありがとうございました!試行錯誤でそれを理解することは決してなかったでしょう、私のために問題を修正しました!
Mikael DyreborgHansen20年

これは私にとってそれでした。ありがとう!
フリーマンヘルムス

4
GoDaddyは、BOMのプレフィックスが付いた秘密鍵「generated-private-key.txt」を生成するため、この問題が発生します。少なくともMacでは、猫と一緒にキーテキストをダンプしてもBOMは表示されませんでしたが、それをより少なく表​​示しました。BBEditを使用してBOMを削除しましたが、形式を変更したり、最初の4バイトを切り取ったりできるものならどれでも機能します。
セスノーブル

55

PEMファイルのヘッダーとフッターをに変更しました

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

そして

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

最後に、それは動作します!


1
-inform pemコマンドに追加して、同じ結果を取得することもできます。例えばopenssl rsa -in server.key -modulus -noout -inform pem
サイモンウッドサイド2018

1
チェックstackoverflow.com/questions/54994641/...を、それはあなたの問題を解決するかどうか
qstack

何かが「悪い」形式(つまり、変更されていないヘッダー)ですでに正しく機能しているので、これはその場しのぎの解決策であり、手動でそれらがないためにクラッシュしないリバースプロキシなど、すでに正常に機能していたものを壊すに違いありません-編集されたヘッダーとフッター。うん!
alejandrob

33

.keyファイルに不正な文字が含まれています。次のように.keyファイルを確認できます。

# file server.key

出力「server.key:UTF-8 Unicode(with BOM)text」は、キーファイルではなくプレーンテキストであることを意味します。正しい出力は「server.key:PEMRSA秘密鍵」である必要があります。

以下のコマンドを使用して、不正な文字を削除します。

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

new_server.keyは正しいはずです。

詳細については、ここをクリックしてください。投稿ありがとうございます。


1
file server.keyこのコマンドは、問題を解決するのに役立ちました。ありがとう。
itsHarshad

tailコマンドにより、キーファイルに奇妙なフォーマット文字が追加されたようです。なぜそうなるのかわからない。
ryanwebjackson

これを@tkplの回答と組み合わせると、エラーが解消されたようです。
ryanwebjackson

これは私に数時間とたくさんの髪を節約しました。
FelipeGusmao20年


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

それが問題ないように見えるということasn1parseは、PEMでエンコードされていないことを私に信じさせます。


他に試すことができるものはありますか?

ASN.1のように見えるので、次を試してください。

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

-inform DERエンコーディングを切り替えることに注意してください。




2

私はWindows10を使用していて、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-----

一方、DERはバイナリエンコーディング形式です。


0

私たちの場合、問題の原因は、使用しようとした秘密鍵がパスフレーズで暗号化されていたことです。

ssh-keygen -popensslコマンドラインツールで秘密鍵を使用する前に、を使用して秘密鍵を復号化する必要がありました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.