Windows Etsy:无法使用给定的CA证书对对等证书进行身份验证

时间:2017-08-10 11:36:04

标签: oauth xampp etsy

为了与Etsy进行OAuth,我在C#中尝试了无数的解决方案,至少启动了身份验证过程(即获取登录URL):

例如

mashery.comhttp://term.ie/oauth/example/client.phpquestion #8321034

但响应总是一样的:

  

oauth_problem = signature_invalid&安培; debug_sbs = GET&安培; HTTPS%3A%2F%2Fopenapi.etsy.com%2Fv2%2Foauth%2Frequest_token&安培; oauth_consumer_key%3D ...我的消费者密钥...%26oauth_nonce%3D2de91e1361d1906bbae04b15f42ab38d%26oauth_signature_method% 3DHMAC-SHA1%26oauth_timestamp%3D1502362164%26oauth_version%3D1.0%26scope%3Dlistings_w%2520listings_r

所以我正在诉诸可怕的PHP世界......

在我的机器上,我安装了以下内容(Windows 10):

XAMPP (xampp-win32-7.1.7-0-VC14-installer) with default options
    JDK (jdk-8u144-windows-i586)
    JRE (jre-8u144-windows-i586)

php_oauth.dll ([php_oauth-2.0.2-7.1-ts-vc14-x86.zip][4]) and copying it to C:\xampp\php\ext

[cacert.pem][4], (dated Jun  7 03:12:05 2017) and coping it to the following directories:
            C:\xampp\perl\vendor\lib\Mozilla\CA
            C:\xampp\phpMyAdmin\vendor\guzzle\guzzle\src\Guzzle\Http\Resources

Apache和Tomcat不会从XAMPP开始运行,因为它说端口443和80正被使用/阻止,所以我适当地将它们更改为444和122

C:\xampp\apache\conf\extra\httpd-ssl.conf
C:\xampp\apache\conf\httpd.conf

到目前为止一切都很好,但是当我在浏览器中运行以下脚本(http://localhost:444/dashboard/etsy.php)时:

<?php
    $base_uri = 'https://openapi.etsy.com';
    $api_key = 'my-etsy-api-key';
    $secret = 'my-etsy-api-secret';


    $oauth = new OAuth($api_key, $secret, OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_URI);
    $req_token = $oauth->getRequestToken($base_uri .= "/v2/oauth/request_token?scope=listings_w%20transactions_r", 'oob');

    $login_url = $req_token['login_url'];
    print "Please log in and allow access: $login_url \n\n";

    $verifier = readline("Please enter verifier: ");
    $verifier = trim($verifier);
    $oauth->setToken($req_token['oauth_token'], $req_token['oauth_token_secret']);
    $acc_token = $oauth->getAccessToken($base_uri .= "/v2/oauth/access_token", null, $verifier);

    $oauth_token = $acc_token['oauth_token'];
    $oauth_token_secret = $acc_token['oauth_token_secret'];
    $oauth->setToken($oauth_token, $oauth_token_secret);

    print "Token: $oauth_token \n\n";
    print "Secret: $oauth_token_secret \n\n";
?>

我收到以下错误消息:

  

致命错误:未捕获OAuthException:使请求失败(Peer   证书无法使用给定的CA证书进行身份验证   C:\ xampp \ htdocs \ dashboard \ etsy.php:8堆栈跟踪:#0   C:\ XAMPP \ htdocs中\仪表板\ etsy.php(8):   OAuth-&gt; getRequestToken('https://openapi ...','oob')#1 {main}抛出   在第8行的C:\ xampp \ htdocs \ dashboard \ etsy.php

我尝试使用每个线程安全运行脚本,x86版本的OAuth(http://windows.php.net/downloads/pecl/releases) - 停止,重新启动Apache)但没有运气。

我的智慧结束了。

如何解决此对等证书问题?

1 个答案:

答案 0 :(得分:1)

只需在本地禁用SSL。

$oauth->disableSSLChecks()

Oauth默认使用CURL SSL证书。本地apache服务器的简单方法是禁用它。为CURL配置SSL。它也将解决oauth的问题。

根据php documentation

我们可以简单地设置证书路径。 $ oauth-&GT; setCAPath( “F:\ XAMPP \ PHP \额外\ SSL \ cacert.pem”); 的print_r($ oauth-&GT; getCAPath());

如果已配置ssl,您还可以将请求引擎设置为curl或php stream。 Official PHP documentation