我在 win server 2012 R2 上安装了最新的 xampp,并且已经为我的域成功安装了 ssl 证书,并且可以从外部访问它(我的站点:https://www.n-aos.com/)。网站服务正常!
我正在使用来自这里的官方 paypal php ipn 代码:https://github.com/paypal/ipn-code-samples/blob/master/paypal_ipn.php#L58-L59并且标记了不起作用的问题,第 58 和 59 行。
如果我将 CURLOPT_SSL_VERIFYPEER
和 CURLOPT_SSL_VERIFYHOST
设置为 0 那么服务工作正常,但我不想在没有验证的情况下工作。 .
我也曾尝试从 ( http://curl.haxx.se/docs/caextract.html ) 下载 cabundle 证书,并使用未注释的行来使用该证书,但错误与没有第 79 行和第 80 行时相同
调试错误日志只有这一行:
[2015-01-23 10:36 Europe/Zagreb] Can't connect to PayPal to validate IPN message: SSL certificate problem: unable to get local issuer certificate
如果您能想到我可以做的事情,我将不胜感激。顺便说一句,几个月前当它从 linux box(一些 debian 发行版)托管时,同样的 ipn 检查代码和平工作,如果有帮助的话。
谢谢,谢谢
最佳答案
好吧,经过很长时间和彻底的测试并试图让 paypal IPN 工作,我的同事,发现了病是什么,所以我会把它贴在这里让我的鞋子里的其他人睡个好觉:)
我们的服务器 ipn 地址是 https,需要执行此步骤。
在与 paypal 通信的 php 文件中添加以下行:
curl_setopt($ch, CURLOPT_SSLCERT, 'c:/path/some.crt');
curl_setopt($ch, CURLOPT_SSLKEY, 'c:/path/some.key');
curl_setopt($ch, CURLOPT_CAINFO, 'c:/path/cabundle.crt');
对于第一行和第二行,将完整路径添加到正在 curl 到 paypal 的域的证书文件。
对于第三行,这是棘手的部分,从这个页面添加第二个旧证书
http://curl.haxx.se/docs/caextract.html
拥有 1024 位长的 verisign key 的那个! :)
奇怪的是,一些 ssl 站点的测试确实通过了新的 cabundle,比如 google、bank 站点,但是 paypal 失败了..这让我们感到困惑
github 上证书文件的直接链接位于:github link from 13.08.2015
干杯,
关于php - Windows srv 2012 R2 IPN 问题上的 XAMPP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28109304/