1

我有一个 DER 格式的私钥。我试图将其转换为 PEM 格式。在转换时我做

   -----BEGIN PRIVATE KEY-----

        Base64.encode(privateKey,.getEncoded());

   -----END PRIVATE KEY-----

但在某些示例中,我看到,在标题之后的行下方。

   Proc-Type: 4,ENCRYPTED
   DEK-Info: DES-EDE3-CBC,F2D4E6438DBD4EA8

它们有什么意义吗?从 DER 转换为 PEM 时是否也应该添加它?

4

3 回答 3

1

就安全性而言,通常将私钥保持不加密被认为是一种不好的做法。

基本上,标题表明私钥 base64 数据是用密码加密的。因此,任何试图读取私钥的程序(例如 Web 服务器)都会知道私钥是受密码保护的,并且它首先需要密码来解密私钥。

如果这些标头不存在,程序会假定 base64 密钥数据是纯文本格式,会直接使用它。

如果您不使用密码来保护 pem 格式的密钥,则 pem 可能如下所示(没有标题):

-----开始 RSA 私钥----- MIICWwIBAAKBgQDL9R9pUyXOnHybNhm9FqhNjUX1W2HEt7bCGQIo0FvT6UyyL7TT -----结束 RSA 私钥-----

于 2013-02-14T09:16:09.213 回答
0

如果您要加密 PEM 文件,这些标头很重要。第一个告诉文件是否被加密,第二个给出加密算法(如您所见)和初始向量。

于 2013-01-28T08:24:34.210 回答
0

这些标头源自原始PEM 格式。PEM 在部署之前被新的安全标准取代,但文件格式和以纯文本传输二进制数据的想法在许多不同的标准中得到了重用。

OpenSSL 头文件 pem.hRFC7468定义了其中的大部分。然而,OpenSSHOpenPGP等新标准也使用这种格式以纯文本形式存储密钥。

您可以查看此答案以获取更多信息。

于 2021-09-08T00:28:05.760 回答