私钥 PEM 标头

问题描述 投票:0回答:3

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

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

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

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

但在某些示例中,我看到标题后面的几行。

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

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

ssl openssl ssl-certificate private-key
3个回答
3
投票

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

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

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


3
投票

从安全角度来看,保持私钥不加密通常被认为是一种不好的做法。

基本上标头表明私钥 Base64 数据是用密码加密的。因此,任何尝试读取私钥的程序(例如网络服务器)都会知道私钥受密码保护,并且首先需要密码才能解密私钥。

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

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

-----BEGIN RSA PRIVATE KEY----- 
MIICWwIBAAKBgQDL9R9pUyXOnHybNhm9FqhNjUX1W2HEt7bCGQIo0FvT6UyyL7TT...
-----END RSA PRIVATE KEY-----

1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.