我尝试在PHP中使用以下curl命令:curl --cacert "/certs/cert.pem" --tlsuser user --tlspassword password --data-urlencode name=value https://url.to/path -o file.txt
我的PHP代码如下,但我总是出错:
$data = array("name" => "value");
$this->curl = curl_init();
curl_setopt_array($this->curl, array(
CURLOPT_CAINFO => getcwd()."/cert.pem",
CURLOPT_USERPWD => user.":".password,
CURLOPT_URL => "https://url.to/path",
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_POSTFIELDS => $data,
CURLOPT_PROTOCOLS => CURLPROTO_HTTPS,
CURLOPT_FTPSSLAUTH => CURLFTPAUTH_TLS,
CURLOPT_FTP_SSL => CURLFTPSSL_ALL,
CURLOPT_SSL_VERIFYPEER => FALSE,
CURLOPT_SSL_VERIFYHOST => 2
));
$res = curl_exec($this->curl);
我总是收到错误号35(CURLE_SSL_CONNECT_ERROR)和以下错误消息:rror:14077410:SSL例程:SSL23_GET_SERVER_HELLO:sslv3警报握手失败。因此我假设我在curlopt数组中犯了一个错误,但我不知道我做错了什么。我也试图让FTP的东西离开,但这既不起作用。我该如何解决这个问题?
答案 0 :(得分:2)
--tlsuser和--tlspassword用于根据RFC 5054通过TLS执行SRP(安全远程密码) - 这不是TLS的常用功能。
您的PHP程序没有设置这些选项。他们称之为CURLOPT_TLSAUTH_USERNAME和 CURLOPT_TLSAUTH_PASSWORD那里。