Windows Etsy: сертификат Peer не может быть аутентифицирован с данными сертификатами CA

Стремясь быть OAuth'd с Etsy, я попробовал бесчисленное количество решений на C#, чтобы хотя бы запустить процесс аутентификации (т.е. получить URL-адрес для входа):

например

mashery.com, http://term.ie/oauth/example/client.php и вопрос #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";
?>

Я получаю следующее сообщение об ошибке:

Неустранимая ошибка: Uncaught OAuthException: сбой выполнения запроса (сертификат однорангового узла не может быть аутентифицирован с данными сертификатами CA) в C:\xampp\htdocs\dashboard\etsy.php:8 Трассировка стека: # 0 C: \ xampp \ htdocs \ dashboard \ etsy.php (8): OAuth-> getRequestToken (' https://openapi/...', 'oob') #1 {main}, брошенный в C: \ xampp \ htdocs \ dashboard \ etsy.php в строке 8

Я пытался запустить скрипт с каждым потокобезопасным, xA версии OAuth ( http://windows.php.net/downloads/pecl/releases) - остановите, перезапустите Apache), но не повезло.

Я в своем уме.

Как решить эту проблему с сертификатом Peer?

1 ответ

Просто отключите SSL на локальном.

$oauth->disableSSLChecks()

По умолчанию используется сертификат CURL SSL. Простой способ для локального сервера Apache - отключить его. Либо настройте SSL для CURL. Это также решит проблему для oauth.

согласно документации php

мы можем просто установить путь к сертификату. $ Oauth->setCAPath("F:\ XAMPP \ PHP \ Extras\ SSL \cacert.pem"); print_r($oauth->getCAPath());

Вы также можете настроить обработчик запросов на curl или php stream, если ssl уже настроен. Официальная документация PHP

Другие вопросы по тегам