Openssl

即使我知道密碼也無法解密私鑰

  • December 27, 2018

我認為我的問題歸結為密鑰有問題,但我不能只是解密它,以便進一步調查,而不解析它。但我不確定。

我正在嘗試使用標準方法:

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 解析器上失敗了,與密碼片語無關。

我可以以某種方式獲得未加密版本的密鑰並使用其他工具來查看問題所在嗎?

我已經看到一些文章發生了一些變化,並且看似好的密鑰無法解析的可能原因,但它們都適用於未加密的版本。但他們唯一的方法是我見過的解密密鑰是上面的一種。

我相信您的私鑰已被修改,因為我能夠通過更改我剛剛創建的範例密碼片語保護密鑰中的單個字元來複製相同的錯誤消息。

您可以按如下方式重現 -

  1. 創建密碼片語保護的私鑰
  2. 解密私鑰以確保其正常工作。
  3. 更改包含加密私鑰的文件中的單個字元。
  4. 現在嘗試解密它。
[testuser@whitehat .ssh]$ openssl rsa -in id_rsa -out id_rsa.decrypted
輸入 id_rsa 的密碼:
編寫 RSA 密鑰
[testuser@whitehat .ssh]$ ls -al id_rsa*
-rw --------。1 tester tester 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:錯誤:0D07207B:asn1 編碼常式:ASN1_get_object:標頭太長:asn1_lib.c:150:
139900595279688:error:0D068066:asn1 編碼常式:ASN1_CHECK_TLEN:bad object header:tasn_dec.c:1306:
139900595279688:error:0D07803A:asn1 編碼常式:ASN1_ITEM_EX_D2I:nested asn1 錯誤:tasn_dec.c:381:Type=RSA
139900595279688:錯誤:04093004:rsa 常式:OLD_RSA_PRIV_DECODE:RSA 庫:rsa_ameth.c:115:
139900595279688:錯誤:0D07207B:asn1 編碼常式:ASN1_get_object:標頭太長:asn1_lib.c:150:
139900595279688:error:0D068066:asn1 編碼常式:ASN1_CHECK_TLEN:bad object header:tasn_dec.c:1306:
139900595279688:error:0D07803A:asn1 編碼常式:ASN1_ITEM_EX_D2I:nested asn1 錯誤:tasn_dec.c:381:Type=PKCS8_PRIV_KEY_INFO
139900595279688:錯誤:0907B00D:PEM 常式:PEM_READ_BIO_PRIVATEKEY:ASN1 庫:pem_pkey.c:132:
[testuser@whitehat .ssh]$

作業系統和 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
經銷商編號:科學
描述:Scientific Linux 6.2 版(Carbon)
發布:6.2
代號:碳
[testuser@whitehat /]$ rpm -q openssl
openssl-1.0.1e-30.el6_6.5.x86_64

引用自:https://serverfault.com/questions/677989