当前位置: 首页 > 知识库问答 >
问题:

连接易趣时出现“SSL证书问题”

庄星汉
2023-03-14

我想从易趣检索类别。这是我的代码:

function getCategories(){


    $endpoint = "https://api.ebay.com/ws/api.dll";
    //$endpoint = 'http://svcs.ebay.com/services/search/FindingService/v1';

    $api_dev_name = "XXX";
    $api_app_name = "XXX";
    $api_cert_name = "XXX";
    $auth_token = "XXX";

    $headers = array(
        'X-EBAY-API-COMPATIBILITY-LEVEL: 819',
        'X-EBAY-API-DEV-NAME: '.$api_dev_name,
        'X-EBAY-API-APP-NAME: '.$api_app_name,
        'X-EBAY-API-CERT-NAME: '.$api_cert_name,
        'X-EBAY-API-CALL-NAME: GetCategories',
        'X-EBAY-API-OPERATION-NAME: GetCategories',
        'X-EBAY-API-SITEID: EBAY-US',
        'Content-Type:text/xml'
    );

    $xmlRequest = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
    $xmlRequest .= "<GetCategoriesRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\">";
    $xmlRequest .= "<RequesterCredentials>";
    $xmlRequest .= "<eBayAuthToken>{$auth_token}</eBayAuthToken>";
    $xmlRequest .= "</RequesterCredentials>";
    $xmlRequest .= "<CategorySiteID>0</CategorySiteID>";
    $xmlRequest .= "<DetailLevel>ReturnAll</DetailLevel>";
    $xmlRequest .= "</GetCategoriesRequest>";
    $xmlRequestEncode = utf8_encode($xmlRequest);

    $curl = curl_init();

    curl_setopt_array($curl,
        array(
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_URL => $endpoint,
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => $xmlRequestEncode,
            CURLOPT_HTTPHEADER => $headers
        )
    );

    $response = curl_exec($curl);

    if (!$response) {
        die('Error: "' . curl_error($curl) . '" - Code: ' . curl_errno($curl));
    } else {
        echo $response;
    }

    curl_close($curl);
}

getCategories();

$api_dev_name$api_app_name$api_cert_name$auth_token在正式生产环境中有效、活动并设置。

我从curl得到这个错误:

错误:“SSL证书问题,请验证CA证书是否正常。详细信息:错误:14090086:SSL例程:SSL3\u GET\u SERVER\u证书:证书验证失败”-代码:60

为什么会出现此错误?

共有2个答案

龚招
2023-03-14

只需在curl\u setopt\u数组中添加新的两行,

CURLOPT_SSL_VERIFYPEER => false, // new code
CURLOPT_SSL_VERIFYHOST => false // new code
叶卓君
2023-03-14

根据OpenSSL的s\U客户端:

$ openssl s_client -connect svcs.ebay.com:443
CONNECTED(00000003)
depth=2 C = US, O = "VeriSign, Inc.", OU = VeriSign Trust Network, OU = "(c) 2006 VeriSign, Inc. - For authorized use only", CN = VeriSign Class 3 Public Primary Certification Authority - G5
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/C=US/ST=California/L=San Jose/O=eBay, Inc./OU=eBay Site Operations/CN=svcs.ebay.com
   i:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at https://www.verisign.com/rpa (c)10/CN=VeriSign Class 3 Secure Server CA - G3
 1 s:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at https://www.verisign.com/rpa (c)10/CN=VeriSign Class 3 Secure Server CA - G3
   i:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5
 2 s:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5
   i:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority - G2/OU=(c) 1998 VeriSign, Inc. - For authorized use only/OU=VeriSign Trust Network
---
...

因此,您需要信任Class 3公共初级证书颁发机构-G2。您可以下载表单Verisign根证书。抓取带有指纹的标记为根1的指纹85 37 1c a6 e5 50 14 3d ce 28 03 47 1b de 3a 09 e8 f8 77 0f

下载ZIP文件后,可以在第2代(G2)PCAs文件夹中找到它。其命名的Class 3公共主证书颁发机构-G2。pem。

最后,告诉cURL使用您下载的根证书。我去不了cURL的cURL文档。哈克斯。现在是se,所以我不能告诉你打电话做什么。

不要将数百个CA加载到CA文件中。您知道Verisign认证易趣的证书,因此只使用所需的Verisign CA。不要让攻击者让您相信其他内容(例如,Truswave声称他们认证易趣)。

 类似资料:
  • 问题内容: 我正在运行使用使用自签名CA证书创建的证书的https服务器。 现在,我想将Socket.io客户端连接到连接到https服务器的Socket.io服务器。不幸的是,我得到一个错误,告诉我: 基本上,此错误告诉我无法成功验证证书。这是由于相应的CA证书是自签名的。使用https请求时,我可以指定我信任的CA。 在这种情况下,如何使Socket.io连接? PS:我正在运行Node.js

  • 在我的应用程序中,我试图让python tornado服务器通过WebSockets与javascript html页面通信。我能够使用未加密的连接使连接工作,但当我试图在本文中实现解决方案时: 如何在网页环境中修改javascript代码,以便即使服务器使用自签名证书,也可以连接到服务器?

  • 我想克隆git仓库与TortoiseGit的帮助下,但我得到错误: 错误:SSL证书问题,请验证CA证书是否正常。详细信息:错误:14090086:SSL例程:SSL3\u获取\u服务器\u证书:访问时证书验证失败https://git.assembla.com/pplconnect-PL.webserver.git/info/refs?service=git-上载包致命:HTTP请求失败 git

  • 我有一个广告发布的证书,可以绑定到TomCat SSL安装。 我创建密钥库/导入证书: 已配置SSL连接器引用密钥库 列表项 重新启动TomCat服务 当我转到证书FQDN/webapp时。html-我什么也得不到。 这是为什么? 有人在谈论如何改变现状。cer证书到jks吗?还需要安装根证书或中间证书吗? 有人知道这是如何变得简单的吗。我已经阅读了文档,但仔细遵循这些步骤确实不是很清楚。 会感激

  • 跟随[GitHub][1]的实验室学习更多关于Docker容器的信息,我感觉到了这个问题: