2016-06-20 17 views
1

我在使用PHP中的stream_socket_client()使用TLS协议连接到服务器时遇到问题。PHP:无法使用TLS协议使用函数stream_socket_client()设置私钥文件

让我告诉我下面的代码:

$host = '192.168.0.112'; 
$context = stream_context_create(); 
$result = stream_context_set_option($context, 'ssl', 'local_cert', 'D:/xampp/htdocs/ssl_test/cert.pem'); 
$result = stream_context_set_option($context, 'ssl', 'verify_peer', 'true'); 
$result = stream_context_set_option($context, 'ssl', 'passphrase', '123456'); 
$socket = stream_socket_client('tls://'.$host.':5443/Exec', $errno, $errstr, 60, STREAM_CLIENT_CONNECT, $context); 

我跑后,我得到了这样的消息错误:

警告:stream_socket_client():无法设置专用密钥文件`d :\ xampp \ htdocs \ ssl_test \ cert.pem'在第9行D:\ xampp \ htdocs \ ssl_test \ index2.php

警告:stream_socket_client():无法启用D:\ xampp \ htdocs \第9行的ssl_test \ index2.php

警告:stream_socket_client():无法连接到TLS://192.168.0.112:5443/EXEC(未知误差)d:\ XAMPP \ htdocs中\ ssl_test \上线index2.php 9

请注意,我有两个通用文件附带证书cert.pem,key.pem和密码=“123456”

我不知道什么错误或缺少将stream_context_set_option()配置到服务器以及在哪里设置key.pem到配置。

如果有人知道,请在此帮助我。

非常感谢先进的, Vannak。

回答

1

我找到了解决方案,为什么我得到这个错误,因为我的cert.pem需要附加私钥。所以我需要添加一行附加我的key.pem。

stream_context_set_option($context, 'ssl', 'local_pk', 'D:/xampp/htdocs/ssl_test/key.pem'); 

希望这个问题对别人有帮助。