假私钥 - 为什么会是假的?

时间:2012-04-12 14:15:24

标签: php ssl openssl

我打开我的密钥文件,它说这是假的,我不知道为什么。当我用记事本打开它时,我的键看起来不错。为什么它不起作用,我是第一次这样做所以请原谅我是否有明显的事情......

这是我读到的地方

// Reading private key
$fp = fopen("certs/cert.pem", "r");
$priv_key = fread($fp, 8192);
fclose($fp);
$pkeyid = openssl_get_privatekey($priv_key); // Empty

openssl_error_string()给了我error:0906D06C:PEM routines:func(109):reason(108)

2 个答案:

答案 0 :(得分:3)

看起来你正试图从证书文件中获取私钥;私钥不存储在证书中,它是单独存储的。你从哪里获得证书?如果您自己生成CSR并稍后由CA签名,则会为您生成密钥文件以及CSR。如果您使用openssl生成CSR而未指定任何其他选项,例如     openssl -req -new 密钥将位于名为privkey.pem的文件中。它将由---- BEGIN RSA PRIVATE KEY分隔 - 并且内容受密码保护(生成CSR时系统会提示您输入密码)。

答案 1 :(得分:1)

如何诊断OpenSSL错误:

查看错误消息:

error:0906D06C:PEM routines:func(109):reason(108)

获取原因代码(108)并确定错误:

grep 108 include/openssl/ssl.h
#define SSL_F_GET_SERVER_FINISHED                        108
#define SSL_R_BAD_DH_G_LENGTH                            108
#define SSL_R_TLSV1_ALERT_INTERNAL_ERROR                 1080

现在google for SSL_R_BAD_DH_G_LENGTH

运气不好。查看源代码告诉该错误是在

中触发的
 ssl3_get_key_exchange() in s3_clnt.c

这可能会有所帮助。