我正在试图弄清楚Linux内核非对称密钥管理是如何工作的。我的问题是:x509解析器是linux内核中唯一可用的密钥解析器吗?例如,如果我将密钥存储为PEM格式,如何将此密钥添加到内核密钥环中?
感谢。
答案 0 :(得分:0)
PEM或多或少是一种包装格式。它使用页眉和页脚来指示基本64 x509(DER)编码证书的开始和结束。因此,如果您可以添加X509证书,则应该非常容易添加一个" PEM编码"。 PEM正在添加ASCII装甲,即它可以被解释为文本。
您可以使用openssl
命令行将证书从PEM转换为DER,反之亦然:
openssl x509 -in certificate.pem -outform DER -out certificate.der
然后,您可以将证书存储在内核中,这似乎将密钥视为数据的BLOB。
您似乎可以将密钥存储为任何二进制格式。因此,如果您不想使用证书,那么您可以使用某种标准格式对公钥进行编码。对于通常为SubjectPublicKey
的公钥,它是 X5.09证书中的公钥部分。
要仅转换公钥(来自公钥或私钥),请使用:
openssl rsa -in private.pem -pubout -outform DER -out public.der
如果要存储绝对最小,易于处理的密钥,则可以将模数存储为大端无符号整数(恰好是密钥大小),并将公共指数静态设置为值010001
(十六进制)。如果您没有在您的应用程序中使用DER编码例程,这将非常有用。
确保您的密钥存储为"永久密钥"内核中的密钥,否则它仍然会过期。