Làm cách nào để khắc phục sự cố chứng chỉ CA với Curl trong Ubuntu 14.04?


13

Tôi đang sử dụng Ubuntu 14.04. Khi tôi sử dụng curl, tôi gặp lỗi sau:

curl: (77) error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath:

Từ những gì tôi thu thập được từ việc tìm kiếm, vị trí CAfile mà nó đang tìm kiếm không chính xác cho Ubuntu (và nó không tồn tại trên máy tính của tôi), /etc/ssl/certs/ca-certificates.crtlà vị trí thích hợp.

Hầu hết các giải pháp liên quan đến việc đặt biến môi trường CURL_CA_BUNDLEthành vị trí thích hợp hoặc thêm cacert=/etc/ssl/certs/ca-certificates.crtvào .curlrctệp (mới được tạo) trong thư mục nhà của tôi. Tôi đã thử cả hai, và không giải quyết được hoàn toàn vấn đề. Curl đang tìm vị trí này, nhưng nó vẫn không hoạt động, báo lỗi:

curl: (60) SSL certificate problem: self signed certificate in certificate chain

Tôi cũng đã thử gỡ cài đặt và cài đặt lại curl trong Ubuntu và cập nhật các cer CA của tôi $ sudo update-ca-certificates --fresh đã cập nhật các certs, nhưng vẫn không làm cho lỗi 60 biến mất.

Tôi không am hiểu về CA certs, và nghi ngờ tôi đã cố tình thêm một số chứng chỉ tự ký trong quá khứ. Có lẽ tình cờ, tôi không biết.

Có ai biết làm thế nào để sửa lỗi này? Có cách nào để thực sự bắt đầu mới với tất cả các certs của tôi không? Hoặc có ai biết tôi tìm ra chứng chỉ tự ký này ở đâu không, và sau đó làm thế nào để loại bỏ nó?

Tái bút: Tôi không muốn sử dụng cờ -k (aka --insecure). Tôi muốn làm việc này an toàn.

Câu trả lời:


10

Sau khi nghiên cứu và làm việc này trong vài ngày qua, tôi đã làm cho nó hoạt động, và câu trả lời cuối cùng khá đơn giản.

Tôi cần phải thiết lập capath=/etc/ssl/certs/trong .curlrctập tin của tôi .

Điều này có curl làm việc trên dòng lệnh. Để tiếp tục có được curl để làm việc trong R (nơi tôi gặp sự cố lần đầu tiên) tôi cũng cần phải có cacert=/etc/ssl/certs/ca-certificates.crttrong .curlrctệp của mình như đã thử trước đây, nếu không nó vẫn tiếp tục tìm kiếm/etc/pki/tls/certs/ca-bundle.crt

Tôi vẫn không biết tại sao tôi lại thấy lỗi về chứng chỉ tự ký.

Dựa trên một số phát hiện ngẫu nhiên khác, tôi cũng đã tải xuống một chứng chỉ từ trang web Curl với:

sudo wget http://curl.haxx.se/ca/cacert.pem

vào cùng certsthư mục. Có cafilechỉ vào điều này làm việc là tốt. Cuối cùng, tôi đặt nó trở lại ca-certificates.crtvà nó vẫn hoạt động.

Tôi không hiểu chính xác tại sao điều này hoạt động hoặc những gì đang xảy ra, nhưng nó đã được giải quyết.


8

khóa cafile không hoạt động đối với tôi (curl 7.45.0) nhưng cacert (từ tùy chọn --cacert) thì không. Tệp .curlrc của tôi :

capath=/etc/ssl/certs/
cacert=/etc/ssl/certs/ca-certificates.crt

1
cái này hiệu quả với tôi trên Ubuntu 16.04!
Joost Döbken

0

Chúng tôi đã gặp vấn đề tương tự với một trong các chương trình C ++ của chúng tôi trong Ubuntu 14.04.5. Các .curlrc phương pháp không có hiệu lực.

Điều này đã được giải quyết bằng cách tải ca- cert.crt về /etc/ssl/certs/ca-certert.crt và tạo một liên kết tượng trưng ca-bundle.crt trong thư mục / etc / pki / tls / certs / .

Hi vọng điêu nay co ich!


0

Sau khi nghiên cứu một vài lần tôi đã làm cho nó hoạt động, và câu trả lời cuối cùng là khá đơn giản. Làm từng bước

Step:1 Open terminal ctrl+alt+t
Step:2 cd /etc/ssl/certs/
Step:3 sudo wget http://curl.haxx.se/ca/cacert.pem 

Bước 3 sẽ tải tập tin pem trong thư mục certs

  Step 4: Check if .curlrc file is available in your home folder or not. 

.curlrc là một tập tin ẩn. kiểm tra bằng ctrl + h trong thư mục chính. nếu không có thì trên loại thiết bị đầu cuối

Step 5:  nano ~/.curlrc 
Step 6: Now paste the below lines in the open file
        capath=/etc/ssl/certs/
        cacert=/etc/ssl/certs/ca-certificates.crt
Step 7: Now save the file and do your things using curl command.

NB Ở đây tôi đã sử dụng trình soạn thảo nano, nhưng bạn có thể sử dụng bất kỳ trình soạn thảo nào.

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.