2

我正在打开我的密钥文件,它说它是错误的,我不知道为什么会这样。当我用记事本打开它时,我的钥匙看起来没问题。为什么它不起作用,我是第一次这样做,所以如果它很明显,请原谅我..

这是我读到的地方

// 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)

4

2 回答 2

3

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

于 2012-04-12T14:45:33.357 回答
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

现在谷歌搜索SSL_R_BAD_DH_G_LENGTH

好吧,运气不太好。查看源代码表明此错误是在

 ssl3_get_key_exchange() in s3_clnt.c

可能这会有所帮助。

于 2012-04-12T15:47:01.087 回答