gpt4 book ai didi

php - 在套接字连接中添加客户端证书

转载 作者:太空宇宙 更新时间:2023-11-03 13:25:16 25 4
gpt4 key购买 nike

最近几天我一直被这个问题困扰,但找不到任何解决方案。

我正在使用 net php-epp 客户端,这是我的代码...

$context = stream_context_create(
array(
'ssl'=>array(
'local_cert'=> dirname(__FILE__).'/cert.pem',
'passphrase' => dirname(__FILE__).'/key.pem',
)
)
);

$greeting = $client->connect($host, $port, $timeout, $ssl, $context);
echo $greeting;

我遇到以下错误...

Warning: stream_socket_client(): Unable to set private key file

在您询问 key.pem 之前,以 -----BEGIN RSA PRIVATE KEY-----cert.pem 开头> 以 -----BEGIN CERTIFICATE----- 开头

但是我可以使用...连接

openssl s_client -connect epp.dom.net:700 -key key.pem -cert cert.pem -CApath /etc/ssl/certs/

此命令显示已连接,这是否意味着我的证书没问题?

请有人帮我解决这个问题。请

谢谢。

最佳答案

根据PHP documentation , 必须在 local_pk 流上下文选项中指定私钥。当私钥文件本身使用密码加密时,passphrase 选项(您当前正在使用)是必需的:

local_pk string

Path to local private key file on filesystem in case of separate files for certificate (local_cert) and private key.

passphrase string

Passphrase with which your local_cert file was encoded.

这意味着您的流上下文应该像这样初始化:

$context = stream_context_create(array(
'ssl' => array(
'local_cert' => dirname(__FILE__) . '/cert.pem',
'local_pk' => dirname(__FILE__) . '/key.pem',
)
));

或者,您也可以将证书和私钥连接到一个文件中,并仅使用 local_cert 选项(加上一个 passphrase 选项,如果——且仅当——你的私钥使用密码加密)。

关于php - 在套接字连接中添加客户端证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34382739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com