Nội dung chính cần nắm
• Định nghĩa lỗi: Hiểu rằng lỗi xảy ra do thất bại trong quá trình SSL/TLS Handshake.
• Nguyên nhân gây lỗi: Nắm được các nguyên nhân phổ biến như phiên bản cURL cũ, cấu hình sai, chứng chỉ SSL lỗi hoặc bị chặn kết nối.
• Cách khắc phục: Nắm được quy trình xử lý gồm nâng cấp cURL, kiểm tra TLS, xác minh chứng chỉ và kiểm tra tường lửa.
Curl error 35: SSL Connect Error là gì?
Lỗi curl error 35: SSL Connect Error là mã lỗi từ thư viện libcurl, xuất hiện khi cURL không thể thiết lập kết nối bảo mật HTTPS đến máy chủ.
Về mặt kỹ thuật, lỗi này xảy ra khi quá trình SSL/TLS Handshake (bắt tay bảo mật) giữa client và server bị thất bại. Đây là bước quan trọng để hai bên thống nhất phương thức mã hóa trước khi truyền dữ liệu.

Nguyên nhân gây ra lỗi curl error 35: SSL Connect Error
Lỗi này thường xuất phát từ sự không tương thích hoặc cấu hình sai giữa client và server. Một số nguyên nhân phổ biến gồm:
• Phiên bản cURL lỗi thời: Không hỗ trợ các giao thức mới như TLS 1.2 hoặc TLS 1.3.
• Cấu hình SSL/TLS không phù hợp: Client và server không thống nhất được phiên bản giao thức.
• Chứng chỉ SSL có vấn đề: Chứng chỉ hết hạn, tự ký hoặc thiếu chứng chỉ gốc.
• Tường lửa hoặc mạng chặn kết nối: Chặn cổng 443 hoặc chặn quá trình handshake.
• Thuật toán mã hóa không tương thích: Hai bên không có cipher chung để thiết lập kết nối.
Các cách khắc phục lỗi curl error 35: SSL Connect Error
Kiểm tra và nâng cấp phiên bản cURL
Các phiên bản cURL cũ thường không tương thích với giao thức bảo mật mới. Bạn có thể kiểm tra bằng lệnh:
Sau đó tiến hành nâng cấp:
• Ubuntu/Debian:
• CentOS/RHEL:
Sử dụng giao thức TLS 1.2 hoặc 1.3
Nếu server không còn hỗ trợ TLS cũ, bạn nên ép cURL sử dụng TLS mới:
Kiểm tra với TLS 1.2:
Kiểm tra với TLS 1.3:
Nếu kết quả hiển thị “SSL certificate verify ok” thì kết nối hợp lệ.
Kiểm tra và cài đặt lại chứng chỉ SSL
Bạn có thể kiểm tra thông tin chứng chỉ bằng:
Nếu thiếu chứng chỉ gốc, hãy cài lại:
• Ubuntu:
• CentOS:
Tạm thời bỏ qua xác thực SSL
Trong một số trường hợp, bạn có thể dùng tham số -k hoặc --insecure để bỏ qua kiểm tra chứng chỉ:
Cách này chỉ nên dùng để test, không nên áp dụng trong môi trường production.
Kiểm tra tường lửa và kết nối mạng
Đảm bảo server không bị chặn kết nối qua cổng 443:
Hoặc:
Nếu không kết nối được, cần kiểm tra lại firewall hoặc cấu hình mạng.
Kiểm tra và thay đổi thư viện cURL
Kiểm tra cURL đang dùng thư viện nào:
Nếu không dùng OpenSSL và vẫn lỗi, bạn nên:
• Cài lại cURL với OpenSSL
• Hoặc biên dịch lại cURL để đảm bảo tương thích tốt hơn với SSL/TLS hiện đại