在XAMPP中为CURL启用SSL支持

时间:2010-12-09 08:04:02

标签: ssl curl https xampp

我使用的是编码的PHP脚本,需要对CURL提供SSL支持。

我目前正在使用XAMPP进行本地开发,并且需要知道如何更新默认CURL,以便通过它启用SSL。

我正在寻找升级/支持的原因是我收到以下错误,当谷歌搜索等等时。我知道我的机器上的CURL不支持SSL。

SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

有人对我有什么建议吗? 我当前的本地服务器配置:

  

XAMPP 1.7.3   启用 cURL支持    cURL信息 7.19.6
   Apache版本 Apache / 2.2.14(Win32)DAV / 2 mod_ssl / 2.2.14   OpenSSL / 0.9.8l mod_autoindex_color   PHP / 5.3.1 mod_apreq2-20090110 / 2.7.1   mod_perl / 2.0.4 Perl / v5.10.1
  已加载模块核心mod_win32 mpm_winnt http_core mod_so mod_actions   mod_alias mod_asis mod_auth_basic   mod_auth_digest mod_authn_default   mod_authn_file mod_authz_default   mod_authz_groupfile mod_authz_host   mod_authz_user mod_cgi mod_dav   mod_dav_fs mod_dav_lock mod_dir   mod_env mod_headers mod_include   mod_info mod_isapi mod_log_config   mod_mime mod_negotiation mod_rewrite   mod_setenvif mod_ssl mod_status   mod_vhost_alias mod_autoindex_color   mod_php5 mod_perl mod_apreq2
   SERVER_SIGNATURE Apache / 2.2.14   (Win32)DAV / 2 mod_ssl / 2.2.14   OpenSSL / 0.9.8l mod_autoindex_color   PHP / 5.3.1 mod_apreq2-20090110 / 2.7.1   mod_perl / 2.0.4 Perl / v5.10.1 Server at   localhost端口80
   SERVER_SOFTWARE Apache / 2.2.14(Win32)DAV / 2 mod_ssl / 2.2.14   OpenSSL / 0.9.8l mod_autoindex_color   PHP / 5.3.1 mod_apreq2-20090110 / 2.7.1   mod_perl / 2.0.4 Perl / v5.10.1

3 个答案:

答案 0 :(得分:10)

您的计算机不支持?您发布的错误意味着CURL无法验证远程服务器的SSL证书,也不一定表明您的计算机存在特定的不足之处。 在我之前使用CURL的经验中,它默认不接受/信任任何证书。根据您的设置以及您计划使用它的方式,您可能希望信任单个自签名证书 [[无法验证自签名证书!]] (例如,来自其他人)你运行的机器)或者你可能想要信任一个真正的证书颁发机构(它将支持验证该CA签署的任何证书)。如果您熟悉如何更改CURL的设置,本教程非常简单: http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/

如果您采用该路径,则可以选择根CA,但如果您只是在两台自己的计算机之间保护传输,则只需将CURL设置为信任其他计算机的证书。

另一方面,如果你确实遇到了一些更深层次的SSL问题,它可能是由许多事情引起的,例如在没有SSL支持的情况下构建。如果您正在制作,配置和编译自己的CURL版本,您可能需要查看有关SSL的主题的http://curl.haxx.se/docs/faq.html,包括

http://curl.haxx.se/docs/sslcerts.htmlhttp://curl.haxx.se/docs/faq.html#What_certificates_do_I_need_when

请注意后一个链接(FAQ)无法验证自签名证书。如果您要连接到自己的另一台服务器,则需要由CA和CURL信任的CA证书对其证书进行签名,以使连接成功。如果您只需要获得签名,或者您可以设置自己的CA,那么就有免费的CA(根据我的经验,只有十倍的时间才能让已经设置好的人签名)。如果其他服务器正在托管一个处理“真实世界”(金钱,产品,个人信息等)的安全网站,那么它的证书应该是或者你应该让它由可信任的CA签署(VISA,Equifax,Comodo,您可以在每个浏览器中找到受信任的根CA列表。

我已经涵盖了我可以响应该错误的内容,但如果这些都没有帮助,那么有关您的设置和系统的更多信息可能有所帮助。 :)

答案 1 :(得分:8)

对我有用的一个非常简单的修复方法是:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

致电之前:

 curl_exec():

在php文件中。

我认为这会禁用SSL证书的所有验证。

答案 2 :(得分:-1)

您应该使用证书颁发机构签署您的公钥(有一些脚本可以为您执行这些操作),或者您可以发送您的证书签名请求并使用您自己创建的CA或某些免费证书颁发机构对其进行签名。 ....

CA.pl脚本的路径/usr/lib/ssl/misc/CA.pl

此命令将创建一个证书颁发机构,该机构需要签署您的服务器密钥  此CA的公钥也必须包含在CA_file

$ CA.pl -newca

为服务器创建私钥和认证请求

$ CA.pl -newreq

从私钥和请求(涉及CA私钥)

创建服务器证书
$ CA.pl -sign