2016-06-20 27 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'); 

希望這個問題對別人有幫助。