Vị trí gói chứng chỉ CA mặc định


18

Tôi cần thêm tệp chứng chỉ .pem vào gói chứng chỉ CA mặc định của mình nhưng tôi không biết gói CA Chứng nhận mặc định được giữ ở đâu.

Tôi cần nối thêm tệp .pem mới của mình vào gói mặc định này. Tôi muốn làm điều đó hơn là chỉ định vị trí của riêng tôi bằng cách sử dụng --capath

cURL rõ ràng biết nơi để tìm nhưng tôi không thấy bất kỳ lệnh cURL nào tiết lộ vị trí. Có một lệnh sẽ tiết lộ vị trí này? Làm thế nào tôi có thể tìm thấy nó?

Theo cURL:
Thêm chứng chỉ CA cho máy chủ của bạn vào gói chứng chỉ CA mặc định hiện có. Đường dẫn mặc định của gói CA được sử dụng có thể được thay đổi bằng cách chạy cấu hình với tùy chọn --with-ca-bundle chỉ ra đường dẫn bạn chọn.

Cảm ơn


Bạn đang sử dụng hệ điều hành nào?
Cristian Ciupitu

Câu trả lời:


20

Chạy curlvới stracecó thể cung cấp cho bạn một đầu mối.

strace curl https://www.google.com | & grep mở

Rất nhiều đầu ra, nhưng ngay gần cuối tôi thấy:

mở ("/ etc / ssl / certs / 578d5c04.0", O_RDONLY) = 4

đó là nơi chứng chỉ của tôi được lưu trữ.


2
+1 để chỉ cho tôi về strace!
Robert Dundon

stracekhông có sẵn trên macOS, rõ ràng. "Tương đương" dtrussđã nói với tôi "dtrace: không thể khởi tạo dtrace: DTrace yêu cầu các đặc quyền bổ sung". Vì vậy, tôi đã sử dụng sudovới nó. Nó đã trả lời "dtrace: fail to exec curl: dtrace không thể kiểm soát các tệp thực thi được ký với các quyền hạn chế". Không hữu ích lắm.
LS

17

Cần có một chương trình 'curl-config' trong 'bin /' của curl, tức là nơi có nhị phân 'curl'.

./curl-config --ca

cung cấp cho đường dẫn cài đặt bó ca.

Tôi mới thực hiện whatis curl-config: "Nhận thông tin về cài đặt libcurl" vì vậy tôi đoán nó sẽ chỉ khả dụng nếu libcurl được cài đặt, mặc dù tôi cho rằng đó là tiêu chuẩn.


1
Tôi đã phải cài đặt một gói trên Ubuntu để chạy nó (bạn sẽ được hiển thị một danh sách các tùy chọn có sẵn nếu nó chưa được cài đặt), nhưng sử dụng lệnh này đã đưa tôi đến đúng nơi!
Robert Dundon

2
Các curl-configchương trình không có sẵn với tất cả các phiên bản của chương trình hoặc cài đặt. Ví dụ, một số quản trị viên có thể không hiểu mục đích của chương trình và không cài đặt nó vì họ nghĩ rằng đó chỉ là một công cụ cấu hình xây dựng. Hơn nữa, nếu người dùng cần chương trình không phải là quản trị viên của hệ thống thì họ không thể cài đặt nó. Tôi có quyền truy cập vào hai hệ thống, một hệ thống không có chương trình này, hệ thống kia không cung cấp đầu ra cho curl-config --ca.
LS

Tôi thích câu trả lời này cho câu trả lời được chấp nhận - sử dụng straceđể tìm thông tin cấu hình không cần thiết.
Ken Williams

7

Tôi tìm thấy một cách dễ dàng: sử dụng --cacertvới một tên tệp sai , đầu ra sẽ hiển thị đường dẫn.

Thí dụ:

~$ curl --cacert non_existing_file https://www.google.com
curl: (77) error setting certificate verify locations:
  CAfile: non_existing_file
  CApath: /etc/ssl/certs

Tôi nghĩ rằng đây trông giống như một giải pháp tốt. Tuy nhiên, curl đã cho tôi lỗi "77", nhưng không phải là thông tin bổ sung.
LS

@LS thử thêm cờ verbose: -v hoặc --verbose
Chananel P

2

Linux (Ubuntu, Debian)

Sao chép CA của bạn vào dir / usr / local / share / ca-chứng chỉ /

sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt

Cập nhật cửa hàng CA

sudo update-ca-certificates

Xóa CA của bạn và cập nhật cửa hàng CA:

sudo update-ca-certificates --fresh

Linux (CentOs 6)

Cài đặt gói ca-chứng chỉ:

yum install ca-certificates

Kích hoạt tính năng cấu hình CA động: update-ca-trust force-enable Thêm nó dưới dạng tệp mới vào /etc/pki/ca-trust/source/anchors/:

cp foo.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust extract

Linux (CentO 5)

Nối chứng chỉ tin cậy của bạn vào tập tin /etc/pki/tls/certs/ca-bundle.crt

cat foo.crt >>/etc/pki/tls/certs/ca-bundle.crt

https://manuals.gfi.com/en/kerio/connect/content/server-configuration/ssl-certert/adding-trust-root-certert-to-the-server-1605.html liên kết rất hay, giải thích, Làm thế nào để thêm nó vào một số hệ điều hành phổ biến.


Trong khi về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo.
Gerald Schneider

@GeraldSchneider> bạn nhận xét đã đọc và đã hành động;)
BiG_NoBoDy

1

bạn có thể tải xuống gói Chứng chỉ gốc CA từ haxx.se , những người tạo ra curl. sau đó chỉ cần thêm chứng chỉ của bạn vào .pem của họ và tham khảo nó khi sử dụng curl với tùy chọn --cacert


1

-v với https trong URL.

$ curl -v https://google.com
* Rebuilt URL to: https://google.com/
* timeout on name lookup is not supported
*   Trying 172.217.9.174...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Connected to google.com (172.217.9.174) port 443 (#0)
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   *CAfile: C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt*

Không. Nó đã không hiển thị bất cứ điều gì như thế đối với tôi. Trong thực tế, tôi đã so sánh đầu ra của điều đó với một lần chạy khác thêm -ktùy chọn để xem liệu có sự khác biệt hay không. Không có sự khác biệt.
LS

@LS bạn có https trong URL của mình không?
Philip Rego

0

Vị trí gói CA mặc định phụ thuộc vào hệ điều hành. Trên RHEL5, nó nằm trong /etc/pki/tls/certs/ca-bundle.pem. Trên các hương vị khác của hệ điều hành Linux hoặc không phải linux, nó có thể ở một vị trí khác.


Vì vậy, tôi đoán rằng tôi chỉ tìm kiếm tập tin đó sau đó ...
Slinky

2
Một ý tưởng khác: # chuỗi /usr/lib64/libcurl.so.3 | egrep '^ /' /etc/pki/tls/certs/ca-bundle.crt
offby1
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.