web-dev-qa-db-ja.com

opensslで秘密鍵を取得できません(開始行:pem_lib.c:703:Expecting:ANY PRIVATE KEY)

.keyファイルがあります。

openssl rsa -text -in file.key

私は得る

unable to load Private Key
140000419358368:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: ANY PRIVATE KEY

また、私は.cerファイルを持っています

openssl x509 -text -in file.cer

私は得る

unable to load certificate
140387178489504:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE

しかし、指摘したように here の場合、次のようにコマンドを実行します。

openssl x509 -text -inform DER -in file.cer

私は得る

Certificate:
    Data:
        Version: 3 (0x2)
        Some more information
        ...
-----BEGIN CERTIFICATE-----
MIIEdDCCA1ygAwIBAgIUMjAwMDEwMDAwMDAxMDAwMDU4NjcwDQYJKoZIhvcNAQEF
...
-----END CERTIFICATE-----

しかし、それはキーでは機能しないようです。

openssl rsa -text -inform DER -in aaa010101aaa__csd_10.key

私は得る

unable to load Private Key
140004844304032:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1337:
140004844304032:error:0D06C03A:asn1 encoding routines:ASN1_D2I_EX_PRIMITIVE:nested asn1 error:tasn_dec.c:849:
140004844304032:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:769:Field=version, Type=RSA
140004844304032:error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib:rsa_ameth.c:115:
140004844304032:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1337:
140004844304032:error:0D06C03A:asn1 encoding routines:ASN1_D2I_EX_PRIMITIVE:nested asn1 error:tasn_dec.c:849:
140004844304032:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:769:Field=version, Type=PKCS8_PRIV_KEY_INFO

秘密鍵とその証明書を取得するにはどうすればよいですか?

23
helado

DERではなくPEM形式の証明書があるようです。これが、-inform PEMコマンドライン引数(opensslにどの入力形式が必要かを伝える)を指定したときに正しく機能する理由です。

秘密鍵が同じエンコーディングを使用している可能性があります。 openssl rsaコマンドが-inform引数も受け入れるように見えるので、試してください:

openssl rsa -text -in file.key -inform DER

PEMエンコードファイルは、次のようなプレーンテキストエンコードです。

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

DERはバイナリエンコード形式です。

更新

キーはPKCS#8形式(PEMまたはDERエンコードのいずれか)で配布される場合があります。これを試して、あなたが得るものを見てください:

openssl pkcs8 -in file.key -inform der
11
larsks

Windowsでopensslを使用すると、「Expecting:ANY PRIVATE KEY」エラーが発生しました(Ubuntu BashとGit Bashにも同じ問題がありました)。

問題の原因は、UTF8を使用してキーパッドと証明書ファイルをメモ帳に保存していたことです。両方のファイルをANSI形式で保存すると、問題は解決しました。

11
Aaron Queenan

openssl pkcs12 -export -out cacert.pkcs12 -in testca/cacert.pemの実行時に、次のメッセージを受け取りました。

秘密鍵をロードできません140707250050712:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:701:Expecting:ANY PRIVATE KEY`

キーファイルとコマンドを提供することでこれを解決しました。スイッチは-inkey inkeyfile.pemです

2
James Jithin

私の2セント:ルートCA証明書でopensslコマンドを実行しているときに、RHEL7.3で同じエラーメッセージが表示されました。その理由は、ADサーバーから証明書をダウンロードするときに、エンコーディングがBase64ではなくDERとして選択されたためです。新しい証明書のダウンロードに適切なバージョンのエンコードが選択されると、エラーは解決されました

これが新しいユーザーに役立つことを願っています:-)

1
Arun Bhosale