很久以前我在做類似的事情。不同之處在於他們只給了我一個pem文件,我用它來連接到他們的服務器。
下面我爲你寫了我的guiessing。 :)
- 使用openssl工具生成myreq.pem。
- 發送myreq.pem給他們並獲得簽名證書ca.pem。
- 像下面這樣在PHP中使用ca.pem。
$context = stream_context_create();
stream_context_set_option($context, 'ssl', 'verify_peer', false); //or can be true
stream_context_set_option($context, 'ssl', 'cafile', "ca.pem");
stream_context_set_option($context, 'ssl', 'local_cert', "ca.pem");
stream_context_set_option($context, 'ssl', 'passphrase', 'your pem file password');
//instead tls can be ssl, sslv3, sslv2 depending requirements, 10 is timeout
$sock = stream_socket_client("tls://host:port", $errno, $errstr, 10, STREAM_CLIENT_CONNECT, $context);
fwrite($sock, "Hi server\r\n");
$strResponse;
while(!feof($sock)) { $strResponse = $strResponse . fgets($sock, 1024); }
fclose($s);
echo $strResponse;
試圖將PEM轉換爲DER,所以openssl_verify在PHP中可以讀取沒有結果仍然返回false。我只是在x509中創建了新的證書,然後從私鑰中刪除了密碼。 – arma 2011-01-05 14:13:12