0

JKJS

观察:

假设 RSA 私钥是通过以下命令创建的:

openssl genrsa -out mykey.pem 1024

然后,在 C 中从该文件中读取密钥没有问题:

RSA *privatekey=NULL;
privatekey=PEM_read_RSAPrivateKey(fp,NULL,NULL,NULL);
if(privatekey==NULL)
ERR_print_errors_fp(stderr);

但是,如果 RSA 密钥对是通过以下命令创建的:

openssl req -newkey rsa:1024 -sha1 -keyout mykey.pem -out rootreq.pem

然后从 mykey.pem 读取会导致错误。为什么?

JKJS哈迪克

4

1 回答 1

1

在第二个命令中,您是否提供了密码?在任何编辑器中打开第二个命令创建的密钥 - 你在 haders 中看到 ENCRYPTED 吗?

如果是,那么这就是为什么您无法使用它来读取它的PEM_read_RSAPrivateKey原因,因为您将第三个参数作为 NULL 传递。

在对 的调用中传递回调以获取密码PEM_read_RSAPrivateKey

或者,您可以使用以下命令从密钥中删除密码

openssl rsa -in mykey.pem -out mykey1.pem.

这将要求您输入密码 - 如果您提供正确的密码,您将获得未加密形式的密钥mykey1.pem

于 2012-12-01T13:11:30.737 回答