1

我正在开发一个 php 客户端来与 Nominet EPP 服务器交互,正如我在他们的网站上找到的那样:http ://registrars.nominet.uk/namespace/uk/registration-and-domain-management/registrar-systems/epp /登记

我需要使用“Verisign Class 3 Public Primary Certification Authority”根证书。我在这里找到了一个(Verisign 被赛门铁克收购):https ://knowledge.symantec.com/support/mpki-for-ssl-support/index?page=content&id=SO5624&actp=LIST&viewlocale=en_US

当我在我的 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_socket_client(): Unable to set private key file ..."

我知道我需要私钥,但在赛门铁克网站上,他们不提供私钥。

有人知道吗?

非常感谢,

哈桑,

4

1 回答 1

0

您没有使用正确的上下文选项。此选项用于定义您的证书。您想要的是使用您找到的证书来验证对等服务器,以确保您确实在与正确的服务器交谈。

如此说:

为了验证安全服务器的身份,您需要从 www.verisign.com 免费获得的“威瑞信 Class 3 Public Primary Certification Authority”根证书(该证书也随大多数 Web 浏览器一起分发)。

在 PHP 文档上:

local_cert

字符串 文件系统上本地证书文件的路径。它必须是包含您的证书和私钥的 PEM 编码文件。

但是你想要的是这样的:

文件

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

于 2017-09-20T08:41:50.220 回答