尽管我知道密码,但无法解密私钥

尽管我知道密码,但无法解密私钥

我认为我的问题归结为密钥有问题,但我无法解密它以进行进一步调查,而无需对其进行解析。但我不确定。

我正在尝试使用标准方法:

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

我相信您的私钥已被修改,因为我能够通过更改我刚刚创建的示例密码保护密钥中的单个字符来复制相同的错误消息。

您可以按如下方式重现此过程 -

  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 testuser testuser 951 3月24日 15:01 id_rsa
-rw-rw-r--. 1 testuser testuser 887 3月 24 15:02 id_rsa.decrypted
-rw-r--r--. 1 testuser testuser 236 3月 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:错误:0D068066:asn1 编码例程:ASN1_CHECK_TLEN:坏对象头:tasn_dec.c:1306:
139900595279688:错误:0D07803A:asn1 编码例程:ASN1_ITEM_EX_D2I:嵌套 asn1 错误:tasn_dec.c:381:Type=RSA
139900595279688:错误:04093004:rsa 例程:OLD_RSA_PRIV_DECODE:RSA lib:rsa_ameth.c:115:
139900595279688:错误:0D07207B:asn1 编码例程:ASN1_get_object:标头太长:asn1_lib.c:150:
139900595279688:错误:0D068066:asn1 编码例程:ASN1_CHECK_TLEN:坏对象头:tasn_dec.c:1306:
139900595279688:错误:0D07803A:asn1 编码例程:ASN1_ITEM_EX_D2I:嵌套 asn1 错误:tasn_dec.c:381:Type=PKCS8_PRIV_KEY_INFO
139900595279688:错误:0907B00D:PEM例程:PEM_READ_BIO_PRIVATEKEY:ASN1 lib: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
描述:Scientific Linux 版本 6.2 (Carbon)
版本:6.2
代号:Carbon
[testuser@whitehat /]$ rpm -q openssl
openssl-1.0.1e-30.el6_6.5.x86_64

答案2

我最终来到这里,因为我遇到了同样的问题,但我的问题是由 AWS ACM 证书导出接口引起的。(可以使用密码导出私有 CA 证书)

关于我使用的特定密码的一些问题...不确定是什么导致了这个问题,但很可能是长度或使用的符号。

最终结果是我得到了一个与我预期不同/缩短的密码密钥。

希望这对某人有帮助......

相关内容