Một số trường hợp thường gặp gồm:
• Trong khu vực quản trị khi kiểm tra bản cập nhật WordPress
• Khi cập nhật plugin hoặc theme
• Khi plugin gọi API từ dịch vụ bên thứ ba
Ví dụ, các plugin như TinyPNG có thể ngừng hoạt động do không thể kết nối API để nén ảnh JPEG, PNG hoặc WebP.
Nguyên nhân phổ biến là hệ thống máy chủ không còn tin cậy hoặc không cập nhật kịp chuỗi chứng chỉ SSL, đặc biệt sau các thay đổi lớn liên quan đến chứng chỉ Let's Encrypt.
Ví dụ một request WordPress có thể phát sinh lỗi:
$res = wp_remote_get('https://example.com/');
if (is_wp_error($res)) {
echo $res->get_error_message();
}
Xử lý lỗi “cURL error 60: certificate has expired”
Lỗi này thường cho biết chứng chỉ SSL hoặc certificate chain đã hết hạn.
1. Tạm thời bỏ qua bước xác thực SSL
Đây là cách xử lý nhanh để test hoặc khắc phục tạm thời.
Bạn mở file:
/wp-content/themes/YOUR_THEME/functions.php
Sau đó thêm đoạn code sau:
add_filter('https_ssl_verify', '__return_false');
Đoạn code này sẽ yêu cầu WordPress bỏ qua bước kiểm tra SSL khi gửi request HTTPS.
Lưu ý: chỉ nên dùng cách này như giải pháp tạm thời vì nó làm giảm mức độ bảo mật.
2. Cập nhật lại certificate bundle
Một cách an toàn hơn là cập nhật lại danh sách CA certificates mà PHP/cURL sử dụng.
Bạn có thể tải file chứng chỉ mới tại:
cURL CA Bundle
Sau đó cập nhật file chứng chỉ trong thư mục:
/wp-includes/certificates/ca-bundle.crt
Việc thay thế bằng certificate bundle mới thường giúp xử lý triệt để lỗi liên quan đến chứng chỉ hết hạn.
Xử lý lỗi “cURL error 60: unable to get local issuer certificate”
Lỗi này xuất hiện khi server không thể xác minh certificate chain do thiếu CA bundle phù hợp.
Để xử lý, hãy làm theo các bước sau.
1. Tải file cacert.pem
Trước tiên, tải file chứng chỉ mới từ:
cacert.pem
Sau đó lưu file vào một thư mục cố định trên server hoặc local machine.
2. Mở file php.ini
Xác định file cấu hình PHP mà website đang sử dụng, sau đó mở file:
php.ini
3. Cập nhật cấu hình certificate
Tìm hai dòng cấu hình sau:
curl.cainfo
openssl.cafile
Cập nhật đường dẫn tới file cacert.pem vừa tải ở bước 1.
[curl]
curl.cainfo = "/path/to/cacert.pem"
[openssl]
openssl.cafile = "/path/to/cacert.pem"
Hãy thay /path/to/ bằng đường dẫn thực tế trên server của bạn.
4. Khởi động lại dịch vụ web
Sau khi chỉnh sửa php.ini, bạn cần restart lại các dịch vụ liên quan như:
• Apache
• Nginx
• PHP-FPM
Điều này giúp cấu hình mới được áp dụng hoàn toàn.
Một số lưu ý quan trọng
Không nên tắt SSL verify lâu dài
Giải pháp bỏ qua SSL chỉ nên dùng để debug hoặc xử lý tạm thời.
Kiểm tra phiên bản PHP và cURL
Phiên bản PHP hoặc cURL quá cũ cũng có thể gây lỗi SSL.
Kiểm tra hosting/server
Nhiều trường hợp lỗi xuất phát từ server chưa cập nhật certificate bundle mới.
Nếu không thể xử lý thủ công, bạn nên liên hệ nhà cung cấp hosting.
Kết luận
WordPress Error 60 liên quan đến SSL thường xuất phát từ certificate hết hạn hoặc server thiếu CA bundle phù hợp. Tùy từng nguyên nhân, bạn có thể xử lý bằng cách tạm bỏ xác thực SSL, cập nhật lại certificate hoặc chỉnh cấu hình PHP. Trong đa số trường hợp, việc cập nhật CA bundle là giải pháp an toàn và ổn định nhất.