Tôi đang thử nghiệm một API sử dụng chức năng php curl_exec
và chứng chỉ CA nhưng có điều gì đó không ổn và tôi bị mất một chút.Chứng chỉ ngang hàng SSL hoặc khóa từ xa SSH không được OK
Tôi đã định cấu hình SSL trên VirtualHost apache của mình và có vẻ ok (mở https:://[myVHost]
... hoạt động).
Tuy nhiên API gọi curl cho tôi lại tin nhắn này:
SSL peer certificate or SSH remote key was not OK
Tôi không phải là rất có kinh nghiệm với SSL vì vậy tôi có vài ý tưởng về nguyên nhân đó.
UPDATE:
Đây là mã Tôi đang sử dụng trong yêu cầu cURL của tôi, tôi đã nhận xét 2 dòng và thay đổi giá trị của họ (nhìn vào dòng 'TODO') và theo cách này nó đang làm việc, tuy nhiên đây chỉ là công việc arround ...
$opts[CURLOPT_URL] = $url;
$opts[CURLOPT_RETURNTRANSFER] = true;
$opts[CURLOPT_CONNECTTIMEOUT] = 50;
$opts[CURLOPT_TIMEOUT] = 100;
$headers = array(
'Accept: application/json',
"User-Agent: APIXXX-PHP-Client");
$opts[CURLOPT_HTTPHEADER] = $headers;
$opts[CURLOPT_USERPWD] = $env->getApiKey() . ':';
if (certificatePresent()) {
// $opts[CURLOPT_SSL_VERIFYPEER] = true;
// $opts[CURLOPT_SSL_VERIFYHOST] = 2;
// TODO: SET IT BACK
$opts[CURLOPT_SSL_VERIFYPEER] = 0;
$opts[CURLOPT_SSL_VERIFYHOST] = 0;
$opts[CURLOPT_CAINFO] = $path
}
curl_setopt_array($curl, $opts);
$response = curl_exec($curl);
Chúng tôi cần mã đầy đủ và đầy đủ mà bạn đang sử dụng để thực hiện yêu cầu, bao gồm * tất cả * các tùy chọn curl được đặt. Ngoài ra, đây có phải là chứng chỉ tự ký không? – Charles
Thông tin đã thêm :) về câu hỏi 'chứng chỉ tự ký' Tôi không biết: chứng chỉ được cung cấp với API ... – WonderLand
Bạn đã xác định thành công nguyên nhân gốc:' CURLOPT_SSL_VERIFYHOST' là 2. Khi được đặt thành 2 , curl sẽ xác minh rằng chứng chỉ hợp lệ và chứng chỉ được cấp bởi CA mà nó tin cậy. Nếu chứng chỉ từ xa được tự ký hoặc không được cấp bởi một CA mà nó tin cậy, nó sẽ rên rỉ và đưa ra lỗi giống như lỗi bạn đã đưa ra. Nếu bạn nhận được chứng chỉ từ bên thứ ba, bạn cần phải thuyết phục curl tin tưởng CA đã ký. Bạn nói rằng bạn đã được cấp chứng nhận CA, đúng không? Bạn đã làm gì với nó? – Charles