[英]How to enable CURLOPT_SSL_VERIFYHOST = 2 support on my OS/PHP
我一直在本地開發一個站點,該站點可對登錄進行身份驗證。 步驟之一是要求我向https資源發出curl請求以獲取訪問令牌。
curl配置的一部分是:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
//curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
如您所見,我注釋掉了CURLOPT_SSL_VERIFYHOST選項。 我在php.net和各種博客/ stackoverflow( 禁用CURLOPT_SSL_VERIFYHOST(libcurl / openssl)的安全后果 )上閱讀了這些選項的含義。
在我的開發機器上, CURLOPT_SSL_VERIFYHOST 2
正常運行。 我只是使用ubuntu 12.04 php5軟件包和php5-curl中提供的香草php安裝。
在生產環境(機架空間雲站點)上, CURLOPT_SSL_VERIFYHOST 2
無法正常工作,這就是為什么我將其更改為false以驗證這是問題所在。 好像我沒有在我的本地主機上顯式做任何事情來啟用它,所以我不知道是什么指令/配置選項來控制它。
我的意思是“不工作”是對生產的卷曲調用返回一個http_code
的0
時VERIFYHOST
設置為2
。 當我將其設置為FALSE
它將返回狀態碼200
我的問題是:
如何在Linux SSL_VERIFYHOST
上啟用SSL_VERIFYHOST
?
任何幫助將不勝感激。 謝謝。
對於“ 2”,必須確保SSL證書中的公用名與使用的主機名匹配。 這是默認設置,並且應該簡單明了,只要針對使用它的主機名(通用名)正確創建了SSL證書即可。
從PHP curl_setopt手冊中:
1檢查SSL對等證書中是否存在公用名。 2檢查公用名是否存在,並驗證其是否與提供的主機名匹配。 在生產環境中,此選項的值應保持為2(默認值)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.