我有一个 DER 格式的私钥。我试图将其转换为 PEM 格式。在转换时我会这样做
-----BEGIN PRIVATE KEY-----
Base64.encode(privateKey,.getEncoded());
-----END PRIVATE KEY-----
但在某些示例中,我看到标题后面的几行。
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,F2D4E6438DBD4EA8
它们有什么意义吗?从 DER 转换为 PEM 时是否也应该添加?
从安全角度来看,保持私钥不加密通常被认为是一种不好的做法。
基本上标头表明私钥 Base64 数据是用密码加密的。因此,任何尝试读取私钥的程序(例如网络服务器)都会知道私钥受密码保护,并且首先需要密码才能解密私钥。
如果这些标头不存在,程序会假设base64密钥数据是纯文本形式,并直接使用它。
如果您不使用密码来保护 pem 格式的密钥,pem 可能如下所示(不带标头):
-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQDL9R9pUyXOnHybNhm9FqhNjUX1W2HEt7bCGQIo0FvT6UyyL7TT...
-----END RSA PRIVATE KEY-----
如果您要加密 PEM 文件,这些标头非常重要。 第一个告诉文件是否已加密,第二个给出加密算法(如您所见)和初始向量。