PHP CURL SSL连接到XML网关

时间:2013-10-05 12:57:27

标签: php curl ssl debian lighttpd

这让我疯狂了2天 - 我有2个PHP函数,详情如下,都使用curl。他们指向完全相同的“XML网关”,唯一的区别是一个是尝试通过SSL而另一个通过未加密的HTTP。

HTTP连接器操作符完全按预期工作,发布XML文件并返回服务器响应。

SSL连接器返回的内容非常模糊'发生了内部服务器错误。请稍后再试'。我的lighttpd错误日志中没有显示任何内容,有没有人有任何好主意?

我想知道这是我的网络服务器配置/ openSSL配置。它们都是Debian Wheezy的标准包。我很欣赏SSL_VERIFYPEER& HOST被设置为销售是不安全的,但我一直试图用尽所选。

openssl s_client -connect xmlgw.companieshouse.gov.uk:443 -ssl3

和命令行功能

curl https://xmlgw.companieshouse.gov.uk/v1-0/xmlgw/Gateway

也可以在Web服务器上按预期工作。

PHP函数:

//SSL post function

public function getSSLCurlResponse($xml) {
    $url = "https://xmlgw.companieshouse.gov.uk/v1-0/xmlgw/Gateway";

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSLVERSION,3);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

    $response = curl_exec($ch);
    curl_close($ch);
    return $response;
}

//HTTP non SSL function
public function getCurlResponse($xml) {
    $url = "http://xmlgw.companieshouse.gov.uk/v1-0/xmlgw/Gateway";

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($ch);
    curl_close($ch);
    return $response;
}

任何帮助都会非常感激!

由于

1 个答案:

答案 0 :(得分:-1)

我已经断定这是与服务器的整体连接中的错误 - 尽管我找不到任何证明这一点的方法。我设法在不使用SSL套接字的情况下找到了替代解决方案。