php套接字:使用没有私钥的Symantec证书

php套接字:使用没有私钥的Symantec证书,php,nominet,Php,Nominet,我正在开发一个与Nominet EPP服务器交互的php客户端,我在他们的网站上发现: 我需要使用“Verisign Class 3公共初级证书颁发机构”根证书。我在这里找到了一个(Verisign由赛门铁克购买): 当我在php代码中使用它时: //$context = stream_context_create(array($this->protocol => $options)); $context = stream_context_create(); stream_conte

我正在开发一个与Nominet EPP服务器交互的php客户端,我在他们的网站上发现:

我需要使用“Verisign Class 3公共初级证书颁发机构”根证书。我在这里找到了一个(Verisign由赛门铁克购买):

当我在php代码中使用它时:

//$context = stream_context_create(array($this->protocol => $options));
$context = stream_context_create();
stream_context_set_option($context, $this->protocol, 'local_cert', __DIR__ . '/../../certificates/'.$this->certificate_path);

$errno = false;
$errstr = false;
$this->socket = stream_socket_client($this->protocol.'://'.$this->hostname.':'.$this->port, $errno, $errstr, 5 , STREAM_CLIENT_CONNECT, $context);
一切正常:证书路径、端口、主机名。。。 我得到:

“stream\u socket\u client():无法设置私钥文件…”

我知道我需要一个私钥,但在Symentec网站上他们不提供私钥

有人知道吗

非常感谢


Hassan,

您没有使用正确的上下文选项。此选项用于定义您的证书。您需要的是使用找到的证书对对等服务器进行身份验证,以确保您与正确的服务器进行了对话

如本报告所述:

为了验证安全服务器的身份,您需要 “Verisign 3级公共初级证书颁发机构”根 证书可从www.verisign.com免费获得(证书为 也适用于大多数web浏览器)

关于PHP文档:

本地证书

文件系统上本地证书文件的字符串路径。信息技术 必须是PEM编码的文件,其中包含您的证书和专用证书 钥匙

但你想要的是:

卡菲尔

证书颁发机构文件在本地文件系统上的位置 应与verify_peer context选项一起使用,以验证 远程对等方的标识


您没有使用正确的上下文选项。此选项用于定义您的证书。您需要的是使用找到的证书对对等服务器进行身份验证,以确保您与正确的服务器进行了对话

如本报告所述:

为了验证安全服务器的身份,您需要 “Verisign 3级公共初级证书颁发机构”根 证书可从www.verisign.com免费获得(证书为 也适用于大多数web浏览器)

关于PHP文档:

本地证书

文件系统上本地证书文件的字符串路径。信息技术 必须是PEM编码的文件,其中包含您的证书和专用证书 钥匙

但你想要的是:

卡菲尔

证书颁发机构文件在本地文件系统上的位置 应与verify_peer context选项一起使用,以验证 远程对等方的标识


感谢Salketer的回复,我更改了它,在Google上搜索到“stream_socket_client():无法启用加密”错误,似乎人们通过添加curl模块来解决它。。。我先仔细检查一下,添加curl模块是什么意思?你的意思是发送一个curl请求而不是“stream\u socket\u client”?不,它已经完成了,我在同一个项目中的一些任务中使用了它。我想,如果你已经搜索了足够多的内容,现在是时候为这个调试提出另一个问题了。感谢Salketer的回复,我更改了它,得到了“stream\u socket\u client():无法启用加密”通过谷歌搜索错误,人们似乎通过添加curl模块来解决它。。。我先仔细检查一下,添加curl模块是什么意思?你的意思是发送一个curl请求而不是“stream\u socket\u client”?不,它已经完成了,我在同一个项目中的一些任务中使用了它。我想,如果你已经搜索了足够多的内容,那么是时候为这个调试提出另一个问题了。