使用Guzzle进行OpenSSL身份验证

时间:2016-03-22 16:25:42

标签: php authentication ssl openssl guzzle

希望有人可以帮助我。我正在英国开发一个网站,需要将房产发布到Zoopla和Prime Location。我正在使用此工具(#显示所需的安全性)https://realtime-listings.webservices.zpg.co.uk/docs/latest/documentation.html#security

HTTP /身份验证这样的事情我很挣扎,所以如果有人能让我开始运行,我会很高兴。

基本上我已经按照上面提到的所有步骤进行操作,现在我已经拥有了从他们那里退回并签名的证书。我正在努力的是配置Guzzle进行身份验证并使用此API。我有一个private.pem文件和一个signed.crt文件(他们已经给出了)。

到目前为止,我最好的尝试是:

$client = new \GuzzleHttp\Client([ 'exceptions' => false ]);
$request = $client->get('https://realtime-listings-api.webservices.zpg.co.uk/sandbox/v1/listing/list', array(), array(
    'cert'      => '/Applications/MAMP/htdocs/mywebsite/signed.crt',
    //'ssl_key'   => '/Applications/MAMP/htdocs/mywebsite/private.pem'
));
var_dump($request->getBody());

但这只是给我一个错误:

  

cURL错误35:与realtime-listings-api.webservices.zpg.co.uk:443相关的未知SSL协议错误(请参阅http://curl.haxx.se/libcurl/c/libcurl-errors.html

这整个概念对我来说都是新的,所以如果有人能够提供一些帮助让我联系我会非常感激。

1 个答案:

答案 0 :(得分:0)

该列表仅支持TLS v1.2,因此您需要告知Guzzle客户端:

$request = $client->get('https://realtime-listings-api.webservices.zpg.co.uk/sandbox/v1/listing/list', array(), array(
    'cert'      => '/Applications/MAMP/htdocs/mywebsite/signed.crt',
    'ssl_key'   => '/Applications/MAMP/htdocs/mywebsite/private.pem',
    'curl.options' => array(
        'CURLOPT_SSLVERSION' => 'CURL_SSLVERSION_TLSv1_2',
    )
));

在向他们提出请求时,您还需要包含证书和SSL密钥。

最后,他们要求您提供您生成的public.csr文件的副本,以验证您的请求:This is the link they provided to upload your csr