即使VERIFYPEER,VERIFYHOST被禁用,SSL连接错误 [英] SSL Connection Error even when VERIFYPEER, VERIFYHOST disabled
问题描述
我目前正在构建一个脚本来完成一些SSL卷曲请求,但是我没有实现这一点。所有我从 curl_error()收到的是一个简单的 SSL连接错误字符串...这根本没有帮助。我已经尝试插入一个有效的自签名证书,禁用验证完全(如下面的代码所示),以及一百万和一个其他配置差异,但我一直得到这个错误。我在哪里出错?
函数请求($ url,$ data,$ method)
{
$ curlSession = curl_init();
$ headers = [
'授权:基本'。 'REDACTED'
];
//设置URL
curl_setopt($ curlSession,CURLOPT_URL,$ url);
curl_setopt($ curlSession,CURLOPT_HTTPHEADER,$ headers);
curl_setopt($ curlSession,CURLOPT_HEADER,1);
switch($ method){
case'POST':
curl_setopt($ curlSession,CURLOPT_POST,1);
curl_setopt($ curlSession,CURLOPT_POSTFIELDS,$ data);
case'PUT':
curl_setopt($ ch,CURLOPT_CUSTOMREQUEST,PUT);
curl_setopt($ curlSession,CURLOPT_POSTFIELDS,$ data);
}
//直接返回,不要打印出来
curl_setopt($ curlSession,CURLOPT_RETURNTRANSFER,1);
//设置正确的端口
curl_setopt($ curlSession,CURLOPT_PORT,80);
//此连接将在30秒内超时
curl_setopt($ curlSession,CURLOPT_TIMEOUT,30);
//禁用SSL检查不工作
curl_setopt($ curlSession,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ curlSession,CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($ curlSession,CURLINFO_HEADER_OUT,true);
//发送请求并将结果存储在数组
$ rawResponse = curl_exec($ curlSession);
//检查连接是否成功
if(curl_error($ curlSession)){
$ info = curl_getinfo($ curlSession);
$ curlError = curl_error($ curlSession);
//关闭cURL会话
curl_close($ curlSession);
print_r($ info);
print($ curlError);
//如果不是...
返回false;
}
$ info = curl_getinfo($ curlSession);
$ httpStatus = curl_getinfo($ curlSession,CURLINFO_HTTP_CODE);
//关闭cURL会话
curl_close($ curlSession);
return $ rawResponse;
}
尝试添加: ($ curlSession,CURLOPT_SSLVERSION,3); $ // FIX SSL23_GET_SERVER_HELLO错误
请参阅 https://sourceforge.net/p/curl/bugs/1037
I am at present building a script to fulfil some SSL curl requests, however I have had no luck in fulfilling these. All I receive from curl_error() is a simple "SSL Connection Error" string... This is not helpful at all. I have tried inserting a valid self-signed certificate, disabled verification entirely (as seen in the code below), and a million and one other configuration variances, but I consistently get this error. Where am I going wrong?
function request($url, $data, $method)
{
$curlSession = curl_init();
$headers = [
'Authorization: Basic ' . 'REDACTED'
];
// Set the URL
curl_setopt($curlSession, CURLOPT_URL, $url);
curl_setopt($curlSession, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curlSession, CURLOPT_HEADER,1);
switch ($method) {
case 'POST':
curl_setopt($curlSession, CURLOPT_POST, 1);
curl_setopt($curlSession, CURLOPT_POSTFIELDS, $data);
case 'PUT':
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($curlSession, CURLOPT_POSTFIELDS, $data);
}
// Return it direct, don't print it out
curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, 1);
// Set correct port
curl_setopt($curlSession, CURLOPT_PORT, 80);
// This connection will timeout in 30 seconds
curl_setopt($curlSession, CURLOPT_TIMEOUT, 30);
// Disable SSL Checking as not working
curl_setopt($curlSession, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curlSession, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curlSession, CURLINFO_HEADER_OUT, true);
// Send the request and store the result in an array
$rawResponse = curl_exec($curlSession);
// Check that a connection was made
if (curl_error($curlSession)) {
$info = curl_getinfo($curlSession);
$curlError = curl_error($curlSession);
// Close the cURL session
curl_close($curlSession);
print_r($info);
print($curlError);
// If it wasn't...
return false;
}
$info = curl_getinfo($curlSession);
$httpStatus = curl_getinfo($curlSession, CURLINFO_HTTP_CODE);
// Close the cURL session
curl_close($curlSession);
return $rawResponse;
}
Try to add:
curl_setopt($curlSession, CURLOPT_SSLVERSION, 3); // FIX SSL23_GET_SERVER_HELLO error
see https://sourceforge.net/p/curl/bugs/1037
这篇关于即使VERIFYPEER,VERIFYHOST被禁用,SSL连接错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!