2012-07-03 26 views
1

在這裏Shopify的第一步...帶SSL證書的Shopify PHP:我在哪裏設置USE_SSL_PEM?

我在cURL 7.24的windows 7機器上運行PHP 5.4和apache 2.2。我試圖跟隨此示例應用程序(https://github.com/cmcdonaldca/ohShopify-Sample-App)使用ohShopify PHP適配器,但...

我得到「SSL證書問題,在我允許應用程序訪問該商店(位於https://xxxxxx.myshopify.com)後,請驗證CA證書是否正確「錯誤。在PHP API FAQ - Q2(http://wiki.shopify.com/PHP_API_FAQ)中提到了這個問題,並提供了一個可能的解決方案。但我不明白在哪裏「在您的配置中將USE_SSL_PEM設置爲true」。這是什麼意思? PHP.ini? CURLOPT_?只需在php代碼中定義它?我已經試過在config_lib.php文件中的PHP代碼是示例應用程序,像這樣的一部分:

define('USE_SSL_PEM',true); 

但是,這並不工作..並通過示例應用程序文件的搜索顯示,沒有人使用它...所以我必須在錯誤的地方。

FAQ中的第二部分是在.php代碼中定義'CA_FILE'。我很好,我認爲,因爲我已經導出了myshopify.com證書並且看起來有效。我,將它從.CER使用爲.pem:

openssl x509 -inform DES -in ie_shopify.cer -out shopify.pem -text 

然後在config_lib.php文件:

define('CA_FILE', getcwd() . '\\shopify.pem'); 

我已經證實,CA_FILE不正確地指向該文件絕對路徑。

我也試過這裏建議的東西(http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/ )通過設置被調用但具有相同結果的ohShopify curlSetopts()函數中的CURLOPT_CAINFO。

和(如前所述),我發現瞭如何轉換.CER從這裏(http://curl.haxx.se/docs/sslcerts.html)

感謝,

尼爾·爲.pem

更新:解決!相反,信任是我第一次使用Internet Explorer作爲一個.CER文件中提取,然後使用OpenSSL的coverted到的.pem文件.pem文件的,我去了:

curl.haxx.se/docs/caextract.html 

...搶下Mozilla的CA證書包 - 這已經是.pem格式。我將cacert.pem文件放在與另一個目錄相同的目錄中,並更新curlSetopts()函數中的CURLOPT_CAINFO行(我之前在shopify.php中添加了此行)。和以前一樣,我直接指向了這個文件:

curl_setopt($ch, CURLOPT_CAINFO, 'D:/apache/htdocs/cacert.pem'); 

它可以工作。繼續。

更新2:只是爲了澄清,因爲我最初尋找Shopify的PHP API常見問題(上面提到)的解決方案...我不需要設置USE_SSL_PEM值(無論它屬於何處)或添加定義CA_FILE代碼。來自unitstep.net博客的關於CURLOPT_CAINFO的建議是正確的。

回答

0

我找到了解決我的問題的方法:不出所料,pem文件不正確 - 正如錯誤信息所示。餘與Mozilla的CA證書捆綁使用絕對路徑直接指向下載的.pem文件完全替換它,它從

http://curl.haxx.se/docs/caextract.html 

然後在shopify.php文件I加入以下行到curlSetopts()函數:

curl_setopt($ch, CURLOPT_CAINFO, 'D:/apache/htdocs/cacert.pem');