使用WooCommerce REST API连接颁发自签名证书

时间:2020-02-29 作者:wharfdale

我有一个简单的php脚本,它连接到我的wordpress来创建一个产品。使用woocommerce rest api库。

$woocommerce = new Client(
  \'https://dev.example.co.uk\',
  \'123456789\',
  \'123456789\',
  [
      \'wp_api\' => true,
      \'version\' => \'wc/v3\',
      \'sslverify\' => false,
  ]
);

// foreach item

$woocommerce->post( \'products\', $data );
致命错误:Uncaught automatic\\WooCommerce\\HttpClient\\HttpClientException:cURL错误:SSL证书问题:在/srv/www/example中自签名证书。co.uk/current/web/app/themes/exampletheme/vendor/automattic/woocommerce/src/woocommerce/HttpClient/HttpClient。php在线417

我尝试了以下操作:从开发人员站点获取证书:

openssl s_client -connect example.co.uk:443 | tee logfile
复制了证书并从中创建了一个名为certificate.crt

MIICyTCCAbGgAwIBAgIJANB2....
上传至:

/srv/www/example.co.uk/current/web/wp/certificate.crt
现在正试图用它来防止这个错误。functions.php

add_action( \'http_api_curl\', function( $handle ) {
    curl_setopt($handle, CURLOPT_CAINFO, ABSPATH . \'certificate.crt\');
});
//ABSPATH的值为:/srv/www/example。co.uk/current/web/wp/

仍然存在相同的错误。无法判断是否正在使用自定义证书。如果是这样的话,那么一定是出了什么问题。

2 个回复
SO网友:Micke Enroos

您可以使用禁用ssl验证\'verify_ssl\' => false. 因此,您应该在代码中更改:

[
      \'wp_api\' => true,
      \'version\' => \'wc/v3\',
      \'sslverify\' => false,
  ]

收件人:

 [
        \'wp_api\' => true,
        \'version\' => \'wc/v3\',
        \'verify_ssl\' => false,
    ]
那么您就不需要更改任何源代码。

SO网友:Mudasser Mian

@wharfdale我也面临同样的问题。您只需打开文件vendor\\automatic\\woocommerce\\src\\woocommerce\\HttpClient\\Options。然后查找函数verifySsl(),并将true替换为false。函数中的行在更改后应如下所示

return isset($此->选项[\'verify\\u ssl\'])?(bool)$此->选项[\'verify\\u ssl\']:false;

此选项将用于在WooCommerce库中验证SSL的curl选项设置为false,它可以工作!

相关推荐

启用SSL后无法编辑或发布

在我的服务器上使用certbot启用SSL后,我无法在wordpress站点上编辑或创建任何帖子,任何尝试都会导致“更新失败”消息试图预览帖子让我在一个无休止的加载屏幕上wp content的调试中没有错误。日志启用真正简单的SSL插件没有任何效果,禁用所有插件和主题也有同样的问题Wordpress地址和网站地址已更新为https://in settings>general如有任何建议,将不胜感激