ssl - 从证书签名请求中恢复私钥

标签 ssl openssl ssl-certificate

私钥和公钥已从钥匙串(keychain)中删除。

但是,我有文件 .certSigningRequest。

有没有办法从 .certSigningRequest 获取 pem 编码格式的私钥?

最佳答案

简而言之,没有。

.certSigningRequest 是发送给您选择的证书颁发机构 (CA) 的内容。然后,证书颁发机构将在验证您确实拥有您正在保护的网站后,签署您的证书,生成您现在丢失的签名证书。

SSL 证书的作用之一是证明您就是您所说的那个人。让 CA 签署您的证书可以为其提供可信度,这基本上就是为什么您不能仅使用 .certSigningRequest 重新生成证书的原因。

向您的 CA 申请新证书

许多 CA 会同情你并允许你向他们请求新的签名证书。当然,这取决于您的 CA 是谁,以及您为获取新证书需要采取的途径。

如果您的 CA 确实允许,您将无法使用您仍然拥有的 .certSigningRequest - 如果没有随附的 key ,该文件现在将毫无用处。您需要生成一个新的 key 对 && 证书签名请求,然后将该请求转发给 CA。

生成新的自签名证书

如果这不是一个选项,或者如果您对从 CA 重新获得额外的信任不感兴趣,您可以通过执行以下命令生成一个自签名证书(假设您使用的是基于 Debian 的 Linux/ Apache ):

openssl req -new -x509 -sha256 -days 365 -nodes -out /etc/ssl/localcerts/apache.pem -keyout /etc/ssl/localcerts/apache.key
chmod 600 /etc/ssl/localcerts/apache*

这将生成一个自签名 SSL 证书,有效期为 1 年(-days 365)。自签名证书的主要缺点是许多浏览器会显示讨厌的弹出窗口,警告用户无法验证站点的身份。

关于ssl - 从证书签名请求中恢复私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31060887/

相关文章:

java - 如何使用 Retrofit 2.0 绕过 android SSL 证书检查

ssl - HTTP 到 HTTPS Nginx 重定向太多

java - 需要帮助 java 到 C++ ssl 套接字

MongoDB 自签名 SSL 连接 : SSL peer certificate validation failed

c - Eclipse CDT 中的 C 相当于 "Open Implementation"

ssl - 旧客户端的 SSL 证书和具有相同公钥/私钥的新证书

ssl - 使用 SSL 客户端身份验证的 Jetty 信任库身份验证

ssh - 启动 SSH session 时 FIPS 完整性验证测试失败

security - 私钥密码的目的是什么?

java - 证书中未定义的 CommonName