2013-03-05 31 views
29

Với PHP & curl, tôi cần kết nối qua proxy đến trang web được bảo mật SSL và bỏ qua cảnh báo chứng chỉ. Dòng lệnh curl của tôi trông giống như sau:php curl -k hoặc --insecure, -X

curl -k -u username:password -X GET https://someURL 

Nhìn qua curl.php, tôi thấy những gì tôi nghĩ là các tùy chọn chính xác để đặt. Với họ, tôi kết thúc với một cái gì đó như thế này:

$ch = curl_init("https://someURL"); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // Ignore cert errors? 
    curl_setopt($ch, CURLOPT_PROXY, true);   // Proxy true? 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    
    curl_setopt($ch, CURLOPT_USERPWD, "username:password");  
    $result = curl_exec($ch); 

Nhưng, $ result luôn trả về false. Mật khẩu của tôi có một ký tự đặc biệt trong đó, "!". Có lẽ tôi cần phải thoát khỏi nó? Ngoài ra, bất kỳ ý tưởng nào khác?

Trả lời

51

Để tắt hoàn toàn kiểm tra chứng chỉ ssl curl, hãy biết tùy chọn CURLOPT_SSL_VERIFYPEER. Nếu được đặt thành false, việc kiểm tra chứng nhận sẽ bị vô hiệu hóa. Như giá trị mặc định là true, bạn sẽ có thêm:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

Từ PHP documentation:

CURLOPT_SSL_VERIFYPEER FALSE ngừng cURL từ xác minh chứng chỉ của đồng đẳng. Các chứng chỉ thay thế để xác minh có thể được chỉ định bằng tùy chọn CURLOPT_CAINFO hoặc thư mục chứng chỉ có thể được chỉ định bằng tùy chọn CURLOPT_CAPATH. TRUE theo mặc định là cURL 7.10. Đã cài đặt gói mặc định là cURL 7.10.

Lưu ý rằng nếu kiểm tra chứng chỉ bị tắt, bạn có thể bỏ qua cài đặt CURLOPT_SSL_VERIFYHOST. Vì vậy, các dòng sau đây có thể được gỡ bỏ:

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 

Bạn cũng hỏi nếu cài đặt sau đây là ok:

curl_setopt($ch, CURLOPT_PROXY, true); 

Từ PHP documentation: Proxy

Các HTTP để đường hầm yêu cầu thông qua.

Có nghĩa là địa chỉ đó chấp nhận địa chỉ proxy như '192.168.0.1:3128' nếu bạn đang sử dụng proxy. true không có ý nghĩa trong trường hợp này

+0

@DanielStenberg Đúng vậy. Phần liên quan đến proxy của bài viết của tôi chỉ là câu trả lời: '// Proxy true?'. (Hãy nhìn lại câu hỏi) – hek2mgl

+0

Ah thực sự, cảm ơn. Tôi đã bối rối bởi câu trả lời và không tương quan đúng với Q. Có thể nó có thể được làm rõ một chút trong câu trả lời để làm cho nó khó khăn hơn cho kẻ ngu như tôi để làm cho kết luận sai ... –

+0

@DanielStenberg Đã chỉnh sửa câu trả lời – hek2mgl