我正在尝试使用cURL来发布到一个刚刚开始使用SNI的应用程序接口(这样他们就可以在一个IP地址上托管多个SSL证书)。
我的cURL因为这次迁移到SNI而停止工作。他们解释说,这是因为cURL得到的是*..domain a.com而不是*..domain b.com,所以SSL失败了。
这似乎是cURL中的一个错误,因为从浏览器访问API时没有错误。
使用下面的代码,它确实可以工作:
exec('curl -k -d "parameters=here", https://urlhere.com/', $output);
print_r($output);
然而,使用-k是不好的,因为它不验证SSL证书。
使用以下代码不起作用:
exec('curl -d "parameters=here", https://urlhere.com/', $output);
print_r($output);
所以我的问题是,如何在使用curl和SNI的同时仍然验证SSL (不必使用-k)。在PHP中有没有其他设置或者cURL选项可以解决这个问题?
发布于 2018-10-16 21:59:20
连同所需的库和Curl版本一起,请求应使用resolve在curl中发送SNI:
curl -vik --resolve example.com:443:198.18.110.10 https://example.com/
https://stackoverflow.com/questions/12941703
复制