P12 - 在不知道 p12 密码的情况下提取公共部分(证书)

信息安全 证书 公钥基础设施 openssl
2021-08-24 13:19:34

我想提取不属于我的已撤销 P12 的公共部分。我无法使用 KeyStore Explorer 打开它,因为系统提示我输入密码,是否可以使用 OpenSSL ?

密码只保护私钥,而不是证书,对吗?

4个回答

它可以用openssl来完成。在终端类型中:

openssl pkcs12 -in myfile.p12 -nokeys -nomacver

当需要导入密钥时,只需按 ENTER。PKCS12 文件中包含的证书应在标准输出上打印(en PEM 格式)。

注意:即使证书以纯文本形式存在于 PCKS12 文件中,文件完整内容的完整性也受到消息验证码 (MAC) 的保护。如果没有密码,您将无法验证文件是否未被修改,这意味着任何可以访问该文件的人都可以添加、删除或修改证书。这可能是一个安全问题,在您的情况下不是必需的,但如果您想在其他情况下重用该提示,则应牢记这一点。

您可以使用 openssl 或 keytool 命令从 p12 文件中提取公钥,但不会验证完整性。

是的,您是对的,密码正在保护私钥。

这里的第一个问题是密钥已经被撤销了,你为什么要再次使用它被撤销的密钥。是否有故意的理由来研究它?

您可以使用 keytool 命令打开公共部分。命令如下

keytool -list -keystore -storetype pkcs12 -rfc

它将提示输入密码,只需按 Enter 按钮即可完成工作。

the Java keystore contains certificate information

更准确地说,它包含公钥或密钥对(公钥和私钥)。密钥库受密码保护,每个私钥也受密码保护。但是,您可以更改或删除密码。由你决定。Java 密钥库就像 Web 浏览器的分离密钥库,即

Mozilla -> 编辑 -> 首选项 -> 高级 -> 证书,Chrome -> 设置 -> 高级设置 -> HTTPS/SSL

此类证书管理器管理您的证书、人员公钥、服务器或证书颁发机构证书,这些证书也是公钥。它们存储在浏览器的密钥库中。

but this information is public (i.e. other machine certificates which you want the local machine to trust)

公钥只是不需要任何保护的密钥,它们是公钥。私钥不是公开的,受密码保护。

您决定何时使用密钥以及何时被盗,从中提取信息并不容易。所以密钥库是一种安全增强。

但是您通常会谈论信任级别或信任指标。

为此,您需要知道,理论上也可以猜测私钥,因此您的安全性不是 100%。今天的超级计算机以 33,862.7 Tera Flops/s 的速度列在 Top500 超级计算机站点上,可能会暴力破解您的私钥。从理论上讲,您的计算机/笔记本电脑可能被盗,或者您的密钥库可能被盗,并且您的密码可以被木马读取。

你最终会问,如果我的密钥库被盗和解密的风险有多大,我可以做些什么来防止它。这通常也是一个努力和价格的问题。

如果您的风险很高,那么您需要将您的密钥库存储在分离的磁盘(即笔式驱动器)上,使用长而复杂的密码并使用受特殊保护的机器进行连接。

4 反对票

如果您谈论的是信任库,则风险不在于有人会看到或窃取信任库中的证书。风险在于有人会将您不想信任的证书添加到存储中。存储应首先受到操作系统权限的保护。密码是额外的保护。