如何使用 OpenSSL 生成的私钥文件进行加密?

信息安全 密码学 openssl 不对称
2021-08-31 15:59:59

当我使用openssl genrsa -out yourdomain.key 2048命令生成密钥时。我了解 yourdomain.key 文件包含私钥和公钥。但是当我检查这个密钥文件的内容时,它以 and 开头和结尾-----BEGIN PRIVATE KEY----------END PRIVATE KEY-----这给人的感觉是这个文件只是私钥。这是为什么?这让我很困惑。

如果我想使用私钥加密消息,我是否应用整个yourdomain.key密钥?或者我应该从中提取私钥部分并使用它?

2个回答

不要使用 OpenSSL 命令行来加密或签署任何东西。OpenSSL 命令行是一个调试工具。要加密或签署消息,请使用为此目的而设计的工具,例如GPG

私钥文件包含构建公钥所需的所有信息。如果你有一个 OpenSSL 可以理解的格式的私钥,并且你想获得对应的公钥,你可以使用openssl pkey -pubout …. 但这不是 GPG 需要的格式。GPG 生成自己的密钥。

私钥用于解密和签名。您不使用它来加密。您为此使用公钥。openssl genrsa不会生成公钥,只会生成私钥。要加密事物,您必须首先生成公钥(因此您有一个密钥对:私有和公共):

openssl rsa -in yourdomain.key -outform PEM -pubout -out public.pem

这将public.pem使用公钥创建文件。使用它来加密文件:

openssl rsautl -encrypt -inkey public.pem  -pubin -in file.txt -out file.enc

要稍后解密,请使用私钥:

openssl rsautl -decrypt -inkey yourdomain.key -in file.enc  -out file.dec