Mandrill CA SSL 错误与 cURL

Posted

技术标签:

【中文标题】Mandrill CA SSL 错误与 cURL【英文标题】:Mandrill CA SSL errors with cURL 【发布时间】:2014-11-26 21:17:15 【问题描述】:

我正在尝试 Mandrill。看起来很好。我注册了一个帐户并获得了一个 api 密钥。从下载 Mandrill php 包装器 https://bitbucket.org/mailchimp/mandrill-api-php

这篇文章似乎有一个很好的 hello-world Mandrill 电子邮件示例,所以我试了一下:

Simple php function to send an email with Mandrill

不断收到此错误:

API call to templates/add failed: Problem with the SSL CA cert (path? access rights?)

我按照这些 S.O. 的指示进行操作。帖子:

error in send email using Mandrill (php) HTTPS and SSL3_GET_SERVER_CERTIFICATE:certificate verify failed, CA is OK

从http://curl.haxx.se/docs/caextract.html获取.pem文件

并确保 curl api 指向 Mandrill api 中的那个文件

curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, TRUE); 
curl_setopt ($ch, CURLOPT_CAINFO, "pathto/cacert.pem");

.pem 文件是可读的。没有疯狂的权限情况。

没有帮助。同样的交易:

API call to templates/add failed: Problem with the SSL CA cert (path? access rights?)

谷歌搜索我在这里遵循 CentOS 6.0 步骤: http://kb.kerio.com/product/kerio-connect/server-configuration/ssl-certificates/adding-trusted-root-certificates-to-the-server-1605.html

以及这里的步骤: http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/

同样的错误。作为最后一次尝试,我将 curl 设置为完全忽略 ssl 步骤。当然不建议这样做,但我只是想在我的脚下感受坚实的地面。我回到 Mandrill.php 并试了一下。

curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, 0);

同样的错误。我想知道是否其他人可以为我阐明这一点。我已经用尽了谷歌。 (它给了我一个recaptcha,因为我使用它太多了)。感谢您的宝贵时间!

(系统:CentOS 6.5,PHP 5.3)

【问题讨论】:

【参考方案1】:

奇怪的是,您在 Linux 上遇到了这个问题(虽然在 Windows 中是已知问题)。

我唯一想到的是,您尝试通过 php.ini 文件将 .pem 作为默认值加载,检查 curl.cainfo 并提供 cacert.pem 文件的绝对路径。这样您就不必使用 CURLOPT_CAINFO 了——也许会得到更好的结果?

跑题了;如果您不需要 API 提供的所有功能,您也可以使用 SMTP 连接(总是更容易使用)。

【讨论】:

以上是关于Mandrill CA SSL 错误与 cURL的主要内容,如果未能解决你的问题,请参考以下文章

PHP - SSL 证书错误:无法获取本地颁发者证书

PHP - SSL 证书错误:无法获取本地颁发者证书

PHP - SSL 证书错误:无法获取本地颁发者证书

自己做的ssl证书和ca证书有啥区别

发生ssl错误 无法建立到该服务器的安全连接

linux 搭建CA服务器 http+ssl mail+ssl 扫描与抓包