[英]SSL: match private key with certificate using PHP (without phpseclib)
[英]php socket: using Symantec certificate without a private key
我正在开发一个与Nominet EPP服务器进行交互的php客户端,正如我在其网站上所发现的: http : //registrars.nominet.uk/namespace/uk/registration-and-domain-management/registrar-systems/epp /注册
我需要使用“ Verisign 3类公共主要证书颁发机构”根证书。 我在这里找到了一个(Verisign由Symantec购买): https : //knowledge.symantec.com/support/mpki-for-ssl-support/index?page=content&id=SO5624&actp=LIST&viewlocale=zh_CN
当我在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);
一切都OK:证书,端口,主机名的路径……我得到:
"stream_socket_client(): Unable to set private key file ..."
我知道我需要一个私钥,但是在Symentec网站上,他们没有提供私钥。
有人知道吗?
非常感谢,
哈桑
您没有使用正确的上下文选项。 此选项用于定义您的证书。 您想要的是使用找到的证书对对等服务器进行身份验证,以确保您与正确的服务器进行了真正的对话。
如上所述:
为了验证安全服务器的身份,您将需要可从www.verisign.com免费获得的“ Verisign 3类公共主证书颁发机构”根证书(该证书也随大多数Web浏览器一起分发)。
在PHP Doc上:
local_cert
字符串文件系统上本地证书文件的路径。 它必须是包含您的证书和私钥的PEM编码文件。
但是您想要的是:
cafile
证书颁发机构文件在本地文件系统上的位置,应与verify_peer上下文选项一起使用以认证远程对等方的身份。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.