今天是星期五,我是一个绝望的系统管理员。我发出了一个 HTTPS 服务器的证书需求,经过一个多星期的漫长等待后才收到它,但是在处理我的请求时,我丢失了保护我的私钥的密码。
鉴于我拥有与密码共同生成的私钥和公钥(我当时就知道),是否有一种聪明的方法可以恢复丢失的密码。
提前致谢。
今天是星期五,我是一个绝望的系统管理员。我发出了一个 HTTPS 服务器的证书需求,经过一个多星期的漫长等待后才收到它,但是在处理我的请求时,我丢失了保护我的私钥的密码。
鉴于我拥有与密码共同生成的私钥和公钥(我当时就知道),是否有一种聪明的方法可以恢复丢失的密码。
提前致谢。
你运气不好。受密码短语保护的加密私钥意味着您必须猜测它,并且由于典型密码短语的高熵,这将非常困难。如果您对密码短语有一个粗略的了解,您可以编写一个脚本来尝试暴力破解它(例如,它类似于“正确的电池马_ _”并受到字典攻击)。
这就是您将密码放在私钥上的全部原因。(当然,为了方便重新启动 apache/nginx,我通常会从我的服务器上的 SSL 私钥中删除密码;尽管让它们只有 root 可读;如果有人获得 root 权限,他们可以安装键盘记录器并无论如何获取我的密码)。
编辑:原则上我应该补充一点,如果您破坏 RSA,您可以获得您的私钥(解决将模数 N 分解为未加密公钥中的两个 ~1024 位素数的乘积的问题;这将让您快速重新生成私钥)或密码短语加密机制(通常是 DES3)来恢复私钥。但是,如果您可以做任何一个,那么其他任何人也可以,这不是一个好的情况。此外,除非你在数论、计算机科学方面取得了根本性突破,或者开发了一台量子计算机,否则暴力破解 RSA 的成本非常高(就像一百万台计算机运行一百万年一样,破解 RSA的几率不到 0.02% 2048 位 RSA 密钥)。
(只是重新发布我对 SO 上的交叉发布问题的答案,因为它现在已经关闭。)
并不真地。这些保护的重点正是使恢复密码变得不可行。
如果密码不是太长,您可以尝试暴力破解...
您最好的选择可能是联系您的 CA 并要求他们重新颁发带有新 CSR 的证书。有些人可能允许在证书有效期内重新输入密钥而无需支付额外费用。
以防万一,您可以检查您生成的私钥是否已加密。这取决于它的存储位置。如果它位于以单词开头-----BEGIN RSA PRIVATE KEY-----并包含单词ENCRYPTED之后的 PEM 文件中,那么这是一个不好的迹象......