Ubuntu 10.04 / CURL: Làm cách nào để sửa / cập nhật Gói CA?


17

Gần đây tôi đã nâng cấp máy chủ của chúng tôi từ 8.04 lên 10.04 và tất cả phần mềm cùng với nó.

Từ những gì tôi tìm thấy trực tuyến, có vẻ như phiên bản mới của CURL không bao gồm gói CA và do đó, không thể xác minh rằng chứng chỉ của máy chủ mà bạn kết nối được ký bởi cơ quan có thẩm quyền hợp lệ .

Lỗi thực tế là:

Lỗi CURL: Sự cố chứng chỉ SSL, xác minh rằng chứng chỉ CA là OK.
Chi tiết: lỗi: 14090086: Các thói quen SSL: SSL3_GET_SERVER_CERTIFICATE:
xác nhận chứng chỉ không thành công 

Một số cung điện tôi đã tìm thấy đề xuất chỉ định thủ công tệp CA hoặc vô hiệu hóa kiểm tra hoàn toàn bằng cách đặt tùy chọn khi bạn gọi CURL, nhưng tôi muốn khắc phục sự cố trên toàn cầu, thay vì phải sửa đổi các cuộc gọi CURL của mỗi ứng dụng.

Có cách nào để khắc phục sự cố CA máy chủ của CURL để tất cả các mã ứng dụng hiện có hoạt động như không cần sửa đổi không?

Câu trả lời:


17

Tôi đã gặp rắc rối tương tự và sau khi tìm hiểu một chút rằng bạn có thể tải xuống một gói CA-certs sẵn sàng để cuộn tròn trên ubfox trực tiếp từ trang web curl dev.

cd /etc/ssl/certs
sudo wget http://curl.haxx.se/ca/cacert.pem

Bây giờ curl sử dụng gói cập nhật nhất và bạn tốt để đi.


1
sau đó tôi phải cập nhật với: update-ca-cert -f
Grain

9

Có một vấn đề tương tự với Ubuntu 12.04 khi chạy curl từ dòng lệnh để có được các công cụ dòng lệnh aws trong github. Tôi tìm thấy nếu tôi chạy dòng lệnh như vậy:

curl https://raw.github.com/timkay/aws/master/aws -o aws --cacert /etc/ssl/certs/ca-certificates.crt

nó sẽ làm việc Nhưng cố gắng đặt biến môi trường CURL_CA_BUNDLE để tôi có thể tránh đối số "cacert" không hoạt động. Cuối cùng cập nhật các chứng chỉ ca dường như để giải quyết vấn đề:

sudo update-ca-certificates

Như một lưu ý phụ, tại một thời điểm tôi đã cập nhật ca-certs từ curl.haxx.se không giải quyết được vấn đề nhưng có thể có liên quan. ( sudo wget http://curl.haxx.se/ca/cacert.pemchạy từ /etc/ssl/certs).


Liên kết 404'd cho tôi. Điều này hoạt động: curl.haxx.se/ca/cacert.pem
dave1010

2
Hừm. Có vẻ tinh ranh để lấy một tập tin có chứa certs như thế không qua HTTPS.
Matthew Schinckel

5

Thông thường, phần mềm không có triển khai duy nhất và được biên dịch dựa trên OpenSSL sẽ tham chiếu ca-bundle.crt trên toàn hệ thống thường được đặt trong /usr/share/ssl/certs.

Vị trí có thể khác nhau trong Ubuntu nhưng gói OpenSSL nên bao gồm tệp ca-bundle.

CURL có nhiều tùy chọn để chỉ định cách xác minh chứng chỉ ..

  • Biến CURL_CA_BUNDLEmôi trường cho vị trí của tệp ca-bundle.
  • --capathcho phép bạn chỉ định thư mục chứa chứng chỉ CA. (Ghi đè CURL_CA_BUNDLE)
  • --cacert cho phép bạn chỉ định tệp chứng chỉ CA.

Trên máy chủ CentOS của tôi, tôi có thể chạy các bước sau để xác định đường dẫn ca-bundle mà CURL sử dụng:

$ curl-config --ca
/usr/share/ssl/certs/ca-bundle.crt

1
SSL mở được cài đặt. Tôi có tệp "ca-cert.crt" trong / etc / ssl / certs / trông giống như một loạt các chứng chỉ được nối với nhau, nhưng tôi đoán rằng CURL không nhìn thấy nó? CURL có cài đặt cấu hình cho CA-Bundle không?
Nick

Bạn có chắc chắn đó không phải là loại chứng chỉ mà nó đang cố xác minh? Các công nghệ chứng chỉ mới hơn như certs Verifying Extended thường yêu cầu cập nhật ca-bundle, vì các certs gốc tương đối mới. Kiểm tra chỉnh sửa sắp tới của tôi quá.
Warner

curl-config dường như không phải là một lệnh hợp lệ trên Ubuntu. Làm cách nào để tôi đặt CURL_CA_BUNDLE?
Nick

Có vẻ như đó là một phần của libcurl3-openssl-devgói dựa trên tìm kiếm Internet nhanh. CURL_CA_BUNDLEchỉ là một biến môi trường. Trong bash , CURL_CA_BUNDLE=/path/to/file.
Warner

Được rồi, gói được cài đặt, nhưng "curl-config --ca" tạo ra một dòng trống. Tôi đã thử đặt biến bằng cách sử dụng 'CURL_CA_BUNDLE = "/ etc / ssl / certs / ca-cert.crt"'. Nhưng "curl-config --ca" vẫn tạo ra một dòng trống sau đó.
Nick
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.