卷曲错误:错误:1408F10B:SSL 例程:SSL3_GET_RECORD:错误的版本号
Posted
技术标签:
【中文标题】卷曲错误:错误:1408F10B:SSL 例程:SSL3_GET_RECORD:错误的版本号【英文标题】:Curl Error :error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number 【发布时间】:2014-01-12 18:09:55 【问题描述】:我有以下代码,它给了我 “Curl Error :error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number” 错误。
$url='https://mysite/login';
$clientcert = "C:\\client.crt";
$keyfile = "C:\\server.key";
$challenge = "passphrase";
$CAFile = "C:\\server.pem";
print "<bR><BR>$challenge<br><br>";
print "<bR><BR>$keyfile<br><br>";
print "<bR><BR>$clientcert<br><br>";
print "<bR><BR>$CAFile<br><br>";
$header=array('contentType:application/json','MY-API-Key:34sdSDFSDFxcvxcvxcvEEE11','Content-Type:application/json','Accept: application/json');
$username=base64_encode("uname");
$password=base64_encode("pswd");
$ch = curl_init();
if(FALSE==$ch)
echo "Unable to create Url Object" . "\n";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_SSLVERSION,3);
//curl_setopt($ch, CURLOPT_POSTFIELDS,"$username:$password");
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; rv:26.0) Gecko/20100101 Firefox/26.0");
curl_setopt($ch, CURLOPT_USERPWD,"$username:$password");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLINFO_HEADER_OUT, 1);
curl_setopt($ch, CURLOPT_SSLCERT, $clientcert);
curl_setopt($ch, CURLOPT_CAPATH, $CAFile);
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, $challenge);
curl_setopt($ch, CURLOPT_SSLKEYPASSWD, $challenge);
curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM');
curl_setopt($ch, CURLOPT_SSLKEY, $keyfile);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//curl_setopt($ch, CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_0);
$response = curl_exec($ch);
$info=curl_getinfo($ch);
我使用与服务器相同的一个密码和 sha384 算法生成了证书。所以我有我在 apache 和 curl 脚本中设置的私钥、证书(.crt 文件)和密码。 请提出可能是什么问题。
【问题讨论】:
【参考方案1】:我遇到了同样的错误,我已经通过更改解决了它
sslVersion = 3
更新到
sslVersion = 'all'
对我有用
在你的情况下,我认为你需要改变
curl_setopt($ch, CURLOPT_SSLVERSION,3);
到
curl_setopt($ch, CURLOPT_SSLVERSION,'all');
它应该可以工作
【讨论】:
看起来除了 3 之外的任何东西都可以工作。可能与 POODLE 相关(至少 your 问题,但不是提问者)。 en.wikipedia.org/wiki/POODLE @Archimedix 感谢您的评论。我在 paypal-sdk 中遇到了这个问题。我已经更新了上面的答案,它可以工作。除了这个改变,我还有什么需要做的吗?? 这里的小说明:'all'可能被转换为int,即0,它指定“使用默认SSL版本”,这又可能是TLSv1。【参考方案2】:我遇到了同样的错误
我已经通过修改解决了
curl_setopt($ch, CURLOPT_SSLVERSION,3);
到
curl_setopt($ch, CURLOPT_SSLVERSION,4);
它应该可以工作
【讨论】:
以上是关于卷曲错误:错误:1408F10B:SSL 例程:SSL3_GET_RECORD:错误的版本号的主要内容,如果未能解决你的问题,请参考以下文章
Facebook - 卷曲错误 SSL_CACERT SSL 证书
无法解决此错误:错误:14077458:SSL 例程:SSL23_GET_SERVER_HELLO:reason(1112) - 关于尝试啥的任何想法?