在这里使用Shopify的第一步...
我在装有cURL 7.24的Windows7机器上运行PHP5.4和Apache2.2。我正在尝试使用这个使用ohShopify PHP适配器的示例应用程序(https://github.com/cmcdonaldca/ohShopify-Sample-App),但是...
在我允许应用程序访问商店(在https://xxxxxx.myshopify.com上)之后,我得到了"SSL,verify the CA cert is OK“错误。PHP API常见问题解答- Q2 (http://wiki.shopify.com/PHP_API_FAQ)中提到了这个问题,并提供了可能的解决方案。但是我不知道在哪里“在你的配置中将USE_SSL_PEM设置为真”。这意味着什么配置?PHP.ini?CURLOPT_?只需在php代码中定义它?我已经在config_lib.php文件中的php代码中尝试过了,该文件是示例应用程序的一部分,如下所示:
define('USE_SSL_PEM',true);但那不管用..通过搜索示例应用程序文件,可以发现没有人使用它。所以我来错地方了。
常见问题解答的第二部分是在.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,但结果相同。
而且(正如前面提到的),我从这里(http://curl.haxx.se/docs/sslcerts.html)了解了如何将.cer转换为.pem。
谢谢,
尼尔
更新:已解决!我没有信任我首先使用Internet Explorer提取的.pem文件作为.cer文件,然后使用openssl转换为.pem文件,而是转到:
curl.haxx.se/docs/caextract.html ...and抓取了Mozilla CA证书包-这已经是.pem格式。我将cacert.pem文件放在与另一个文件相同的目录中,并更新了curlSetopts()函数中的CURLOPT_CAINFO行(我之前在shopify.php中添加了此行)。和前面一样,我直接指向了文件:
curl_setopt($ch, CURLOPT_CAINFO, 'D:/apache/htdocs/cacert.pem');而且它是有效的。下一步。
更新2:只是为了澄清,因为我最初是在PHP API FAQ for Shopify (上面提到的)中寻找解决方案的……我不需要设置USE_SSL_PEM值(不管它属于哪里),也不需要添加定义CA_FILE代码。unitstep.net博客中关于CURLOPT_CAINFO的建议是正确的。
发布于 2012-07-04 09:27:48
我找到了问题的解决方案:不出所料,.pem文件是不正确的-正如错误消息所指出的那样。我将其完全替换为Mozilla CA证书包
http://curl.haxx.se/docs/caextract.html 然后,在shopify.php文件中,我将以下行添加到curlSetopts()函数中,使用绝对路径直接指向下载的.pem文件:
curl_setopt($ch, CURLOPT_CAINFO, 'D:/apache/htdocs/cacert.pem');https://stackoverflow.com/questions/11315827
复制相似问题