Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 客户端证书身份验证的Curl错误_Php_Authentication_Curl_Client Certificates - Fatal编程技术网

Php 客户端证书身份验证的Curl错误

Php 客户端证书身份验证的Curl错误,php,authentication,curl,client-certificates,Php,Authentication,Curl,Client Certificates,我必须调用一个需要客户端证书身份验证的api。 我在postman中通过客户端认证测试了这个api,并且它工作得非常好。 现在我想用php curl来实现它。 我尝试下面的代码,但它给我以下错误 HTTP/2流0未完全关闭:需要HTTP_1_1_(错误13) 错误消息包含您需要的所有线索:HTTP\u 1\u REQUIRED HTTP/2不支持TLS客户端证书,因此您需要通过显式请求来确保使用HTTP/1.1完成curl请求。否则,curl将默认升级到HTTPS URL上的HTTP/2 将CU

我必须调用一个需要客户端证书身份验证的api。 我在postman中通过客户端认证测试了这个api,并且它工作得非常好。 现在我想用php curl来实现它。 我尝试下面的代码,但它给我以下错误

HTTP/2流0未完全关闭:需要HTTP_1_1_(错误13)


错误消息包含您需要的所有线索:HTTP\u 1\u REQUIRED

HTTP/2不支持TLS客户端证书,因此您需要通过显式请求来确保使用HTTP/1.1完成curl请求。否则,curl将默认升级到HTTPS URL上的HTTP/2

CURLOPT\u HTTP\u VERSION
设置为
CURL\u HTTP\u VERSION\u 1\u 1

$url = 'https://someurl';
$json = 'somejson';




$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_VERBOSE, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); 
curl_setopt($ch, CURLOPT_SSLCERT, __DIR__."/certificate.pem"); 
curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM'); 
curl_setopt($ch, CURLOPT_SSLKEY, __DIR__."/privatekey.key"); 
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
$responseData = curl_exec($ch);
if(curl_errno($ch)) {

    echo curl_error($ch);
}
curl_close($ch);