Sửa lỗi curl Error 60: "SSL certificate problem: unable to get local issuer certificate"

intermediate🔒 SSL/TLS2026-04-20

Điều gì đang xảy ra?Bạn đang định tải xuống một công cụ hoặc gọi một API endpoint, nhưng thay vì nhận được dữ liệu, bạn lại thấy một khối văn bản kết thúc bằng Error 60. Kết nối bị dừng ngay lập tức vì hệ thống của bạn không thể xác minh danh tính của máy chủ. Đây là một rào cản bảo mật được thiết kế để bảo vệ bạn khỏi các luồng truy cập bị chặn thu, nhưng nó thường xảy ra do các vấn đề cấu hình cục bộ.

curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it.

Tại sao Curl lại báo lỗiHầu hết mọi lúc, vấn đề nằm ở một vài nguyên nhân phổ biến. Các công cụ của bạn (curl hoặc wget) đang tìm kiếm một "nguồn tin cậy" (source of truth)—một danh sách các Tổ chức phát hành chứng chỉ (Certificate Authorities - CAs) đáng tin cậy—nhưng lại không tìm thấy gì.

  • Chứng chỉ CA cũ kỹ: Kho lưu trữ chứng chỉ của hệ thống đã không được cập nhật trong nhiều năm. Nó không nhận diện được các tổ chức phát hành mới hơn như Let's Encrypt.
  • Môi trường rút gọn: Các Docker image tối giản (như alpine:latest) thường lược bỏ gói ca-certificates để tiết kiệm dung lượng.
  • "Người đứng giữa" trong doanh nghiệp: Nhiều văn phòng sử dụng tường lửa (như Zscaler) để thay thế chứng chỉ thực của website bằng chứng chỉ do công ty sở hữu. Nếu hệ thống của bạn không có chứng chỉ root của công ty, nó sẽ báo lỗi.
  • Sai lệch đường dẫn: Công cụ đang tìm kiếm tại /etc/ssl/certs, nhưng bản phân phối của bạn lại lưu trữ chúng ở nơi khác.

Cách 1: Cập nhật kho lưu trữ chứng chỉ hệ thốngCập nhật "danh bạ" các tổ chức phát hành đáng tin cậy của hệ thống thường là cách khắc phục nhanh nhất. Điều này buộc hệ điều hành phải tải xuống danh sách các nhà cung cấp toàn cầu mới nhất.

Ubuntu / Debian```

sudo apt-get update sudo apt-get install --reinstall ca-certificates sudo update-ca-certificates


### CentOS / RHEL 7 & 8 / Fedora```
sudo yum update ca-certificates
# For newer RHEL-based systems
sudo dnf upgrade ca-certificates
update-ca-trust extract

Alpine Linux (Docker)```

apk update apk add ca-certificates update-ca-certificates


## Cách 2: Cung cấp CA Bundle thủ côngNếu bạn đang làm việc trên một máy chủ bị khóa chặt mà không có quyền root, bạn có thể bỏ qua hoàn toàn kho lưu trữ của hệ thống. Hãy tải xuống bundle mới nhất trực tiếp từ những người duy trì curl và chỉ định lệnh của bạn tới đó.

- Tải bundle mới nhất: ```
curl -O https://curl.se/ca/cacert.pem
  • Chạy curl với cờ --cacert: ``` curl --cacert cacert.pem https://example.com
Nếu bạn thích sử dụng **wget**, hãy dùng cú pháp sau:

wget --ca-certificate=cacert.pem https://example.com


## Cách 3: Thiết lập biến môi trườngViệc nhập cờ cho mọi câu lệnh rất tẻ nhạt. Thay vào đó, hãy chỉ cho shell của bạn biết nơi tìm các chứng chỉ trên toàn hệ thống. Đây là giải pháp hữu ích cho các pipeline CI/CD hoặc các script tự động.

export CURL_CA_BUNDLE="/home/user/certs/cacert.pem" curl https://example.com


Để thiết lập này có hiệu lực lâu dài, hãy thêm dòng export đó vào cuối tệp `~/.bashrc` hoặc `~/.zshrc` của bạn.
## Cách 4: Làm việc sau tường lửa doanh nghiệpTrong môi trường doanh nghiệp, tường lửa thường đóng vai trò như một proxy. Nó chặn lưu lượng truy cập của bạn, giải mã và mã hóa lại bằng một chứng chỉ nội bộ. Bạn cần yêu cầu máy tính của mình tin tưởng Root CA của công ty.

- Yêu cầu đội ngũ IT cung cấp chứng chỉ root định dạng `.crt` hoặc `.pem`.
- Di chuyển nó vào thư mục tin cậy: ```
sudo cp office-proxy-root.crt /usr/local/share/ca-certificates/
  • Chạy sudo update-ca-certificates để lập chỉ mục cho nó.

Cách 5: "Sửa nhanh" nhưng không an toànĐôi khi bạn chỉ cần mọi thứ hoạt động trên máy chủ phát triển cục bộ sử dụng chứng chỉ tự ký (self-signed). Bạn có thể yêu cầu curl bỏ qua hoàn toàn việc kiểm tra bảo mật. Cảnh báo: Không bao giờ sử dụng cách này cho các website công khai hoặc trong mã nguồn production.

# Short flag
curl -k https://localhost:8080

# Long flag
curl --insecure https://localhost:8080

# For wget
wget --no-check-certificate https://localhost:8080

Xác minhChạy curl với cờ -v để xem quá trình bắt tay (handshake) có thành công hay không. Bạn hãy tìm thông báo "SSL certificate verify ok" ở gần cuối kết quả trả về.

curl -vI https://google.com

Terminal của bạn sẽ xác nhận chuỗi tin cậy (chain of trust):

* TLSv1.3 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / AEAD-AES256-GCM-SHA384
* Server certificate:
*  subject: CN=*.google.com
*  issuer: C=US; O=Google Trust Services; CN=GTS CA 1C3
*  SSL certificate verify ok.

Duy trì bảo mậtGiữ cho môi trường của bạn luôn an toàn với ba thói quen sau:

  • Cập nhật tự động: Chạy apt upgrade hàng tuần để giữ cho kho lưu trữ CA luôn mới.
  • Thực hành tốt với Docker: Luôn thêm ca-certificates vào Dockerfile của bạn trong giai đoạn build ban đầu.
  • Tránh di chuyển thủ công: Đừng di chuyển các tệp trong /etc/ssl một cách thủ công. Hãy sử dụng tiện ích update-ca-certificates để quản lý các liên kết một cách an toàn.

Related Error Notes