web-dev-qa-db-ja.com

パスフレーズを知っていても秘密鍵を復号化できません

私の問題は、キーに何かが間違っているという事実に起因すると思いますが、さらに分析するために、解析せずに単に解読することはできません。しかし、私にはわかりません。

私は標準的な方法を使用しようとしています:

openssl rsa -in ./id_rsa -out ./id_rsa.decrypted

パスフレーズは知っていると思います。間違ったものを入力すると、次のようになります。

Enter pass phrase for ./id_rsa:
unable to load Private Key
140256774473360:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:544:
140256774473360:error:0906A065:PEM routines:PEM_do_header:bad decrypt:pem_lib.c:483

悪い解読」はかなり明確です。ここで、一見良いパスフレーズを入力すると、次のようになります。

Enter pass phrase for ./id_rsa:
unable to load Private Key
139662870623888:error:0D07207B:asn1 encoding routines:ASN1_get_object:header too long:asn1_lib.c:153:
139662870623888:error:0D068066:asn1 encoding routines:ASN1_CHECK_TLEN:bad object header:tasn_dec.c:1314:
139662870623888:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:381:Type=RSA
139662870623888:error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib:rsa_ameth.c:115:
139662870623888:error:0D07207B:asn1 encoding routines:ASN1_get_object:header too long:asn1_lib.c:153:
139662870623888:error:0D068066:asn1 encoding routines:ASN1_CHECK_TLEN:bad object header:tasn_dec.c:1314:
139662870623888:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:381:Type=PKCS8_PRIV_KEY_INFO
139662870623888:error:0907B00D:PEM routines:PEM_READ_BIO_PRIVATEKEY:ASN1 lib:pem_pkey.c:132:

キーの読み込みにも失敗しましたが、asn1パーサーでは失敗しました。パスフレーズは関係ありません。

どういうわけか、暗号化されていないバージョンのキーを取得し、他のツールを使用して何が問題になっているのかを確認できますか?

何かが変更され、一見良いキーの考えられる原因が解析に失敗するという投稿をいくつか見ましたが、それらはすべて暗号化されていないバージョンで動作しました。しかし、私が鍵をデリシープトするのを見た彼らの唯一の方法は、上記のものです。

9
luk32

作成したサンプルのパスフレーズ保護キーの1文字を変更することで同じエラーメッセージを複製できたため、秘密キーが変更されたと思います。

これは次のように再現できます-

  1. パスフレーズで保護された秘密鍵を作成する
  2. 秘密鍵を復号化して、機能することを確認します。
  3. 暗号化された秘密鍵を含むファイル内の1文字を変更します。
  4. 今それを解読してみてください。
 [testuser @ whitehat .ssh] $ openssl rsa -in id_rsa -out id_rsa.decrypted 
 id_rsa:
 writing RSA key 
 [testuser @ホワイトハット.ssh] $ ls -al id_rsa * 
-rw -------。 1 testuser testuser 951 Mar 24 15:01 id_rsa 
-rw-rw-r--。 1 testuser testuser 887 Mar 24 15:02 id_rsa.decrypted 
-rw-r--r--。 1 testuser testuser 236 Mar 24 14:52 id_rsa.pub 
 [testuser @ whitehat .ssh] $ vim id_rsa 
 [testuser @ whitehat .ssh] $ openssl rsa -in id_rsa -out id_rsa.decrypted 
 id_rsaのパスフレーズを入力してください:
秘密鍵をロードできません
 139900595279688:error:0D07207B:asn1エンコードルーチン:ASN1_get_object:header too long:asn1_lib.c:150:[。 ____。 381:Type = RSA 
 139900595279688:error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib:rsa_ameth.c:115:
 139900595279688:error:0D07207B:asn1エンコードルーチン:ASN1_get_object:headerが長すぎます:asn1_lib.c:150:
 139900595279688:error:0D068066:asn1エンコードルーチン:ASN1_CHECK_TLEN:badオブジェクトヘッダー:tasn_dec.c:1306:
 139900595279688:error:0D07803A:asn1エンコードルーチン:ASN1_ITEM_EX_D2I :ネストされたasn1エラー:tasn_ dec.c:381:Type = PKCS8_PRIV_KEY_INFO 
 139900595279688:error:0907B00D:PEM routines:PEM_READ_BIO_PRIVATEKEY:ASN1 lib:pem_pkey.c:132:
 [testuser @ whitehat .ssh] $ 

OSとopensslのバージョン情報

 [testuser @ whitehat /] $ lsb_release -a 
 LSBバージョン::core-4.0-AMD64:core-4.0-noarch:graphics-4.0-AMD64:graphics-4.0-noarch:printing- 4.0-AMD64:printing-4.0-noarch 
ディストリビューターID:Scientific 
説明:Scientific Linux release 6.2(Carbon)
リリース:6.2 
コード名:Carbon 
 [testuser @ whitehat /] $ rpm -q openssl 
 openssl-1.0.1e-30.el6_6.5.x86_64 
9
Daniel t.

私は同じ問題を抱えていたのでここに行きましたが、私の原因はAWS ACM証明書のエクスポートインターフェイスが原因でした。 (プライベートCA証明書はパスフレーズでエクスポートできます)

私が使用した特定のパスフレーズについての何か...問題の原因は正確にはわかりませんが、長さまたは使用された記号である可能性があります。

最終結果は、私が期待したものとは異なる/短縮されたパスフレーズを持つキーを持っていたということです。

それが誰かを助けることを願っています...

1
comfytoday