2017-09-20 26 views
1

我開發一個PHP客戶端與Nominet的EPP服務器交互,正如我在他們的網站上找到:http://registrars.nominet.uk/namespace/uk/registration-and-domain-management/registrar-systems/epp/registrationPHP插座:使用Symantec證書沒有私鑰

我需要使用「威瑞信3級公共主要認證機構「根證書。我發現了一個在這裏(威瑞信是由賽門鐵克收購):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); 

萬事OK:證書,端口,主機名... 的路徑和我得到:

"stream_socket_client(): Unable to set private key file ..."

我知道我需要一個私鑰,但在Symentec網站,他們不給私鑰。

有沒有人有任何想法?

非常感謝,

哈桑,

回答

0

您沒有使用正確的上下文選項。該選項用於定義您的證書。你想要的是使用你發現的證書來鑑別對等服務器,以確保你確實在與正確的對話交談。

如前所述本:

爲了驗證安全服務器的身份,你將需要 「威瑞類3公用主證書頒發機構」根 免費提供證書從www.verisign.com (證書是 也分發給大多數網頁瀏覽器)。

在PHP文件:

的local_cert

字符串路徑文件系統中本地證書文件。它 必須是一個PEM編碼文件,其中包含您的證書和私鑰 密鑰。

但是,你要的是這樣的:

憑證檔案錯誤

本地文件系統中 應該和verify_peer上下文選項一起使用來驗證遠程的 身份證書頒發機構的文件位置同行。

+0

感謝Salketer您的回覆, 我改變了它,我得到 「stream_socket_client():失敗,使加密」 –

+0

谷歌搜索的錯誤,似乎人們通過添加捲曲模塊解決它...我首先仔細檢查一下。 – Salketer

+0

添加捲曲模塊是什麼意思? 你的意思是發送一個curl請求而不是「stream_socket_client」嗎? –

相關問題