2015-04-22 20 views
5

Tôi đã sử dụng khối mã sau để thu thập dữ liệu từ trang web HTTPS bằng cách sử dụng cURL.Lỗi cURL (35): lỗi: 14077458: Thường trình SSL: SSL23_GET_SERVER_HELLO: tlsv1 tên không được công nhận

$q = 'https://www.example.org/'; // for example 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $q); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 

$json = curl_exec($ch); 

cURL hiển thị lỗi sau

error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 unrecognized name 

này có thể liên quan đến phiên bản OpenSSL cũ hơn, nhưng như các trang web là một trong Shared hosting, cài đặt máy chủ bên không thể thay đổi vào lúc này. Tất cả những gì tôi có thể làm là thay đổi các tham số cURL.

Tôi đã kiểm tra ở đây https://www.ssllabs.com/ssltest/analyze.html để xem các giao thức có sẵn cho máy chủ đó, không tìm thấy SSL3 và SSL2, nhưng TLS 1.2, TLS 1.1 và TLS 1.0 khả dụng. Tìm kiếm trên Google, tôi đã tìm thấy phiên bản SSL tốt nhất không chỉ định thực sự tự động thương lượng mức tốt nhất để sử dụng. Mặc dù, tôi đã thử với thiết lập phiên bản TLS trong CURLOPT_SSLVERSION (như sau), nhưng cùng một lỗi xảy ra.

curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2); 

Tôi đã cố gắng rất nhiều trong vài ngày qua, nhưng mọi nỗ lực đều vô ích.

Tôi đã cố gắng giải thích tất cả những gì tôi đã làm, nhưng bất cứ ai hãy hỏi xem có cần thêm thông tin hay không. Mọi sự trợ giúp sẽ rất được trân trọng.

Thanks a lot

Trả lời

0

Điều này có thể cURL # 1037 Bug http://sourceforge.net/p/curl/bugs/1037/

Nó dường như xảy ra khi bạn kết nối với một lỗi thời openssl 0.9.8 cURL chống lại một số máy chủ với openssl 1.0.x và sử dụng SNI.

Các vấn đề liên quan