Làm cách nào để cập nhật gói CAURL trên RedHat?


38

Tôi đang gặp vấn đề trong đó gói CA đã được gói cùng với phiên bản cURL của tôi đã lỗi thời.

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

Đọc qua các tài liệu không giúp tôi vì tôi không hiểu những gì tôi cần làm hoặc làm thế nào để làm điều đó. Tôi đang chạy RedHat và cần cập nhật gói CA. Tôi cần làm gì để cập nhật gói CA của mình trên RedHat?

Câu trả lời:


50

Đối với RHEL 6 trở lên , bạn nên sử dụng update-ca-trust , như lzap mô tả trong câu trả lời của anh ấy bên dưới.

--- Đối với các phiên bản cũ hơn của Fedora, CentOS, Redhat:

Curl đang sử dụng gói CA mặc định hệ thống được lưu trữ trong /etc/pki/tls/certs/ca-bundle.crt. Trước khi bạn thay đổi nó, hãy tạo một bản sao của tệp đó để bạn có thể khôi phục hệ thống mặc định nếu bạn cần. Bạn chỉ có thể nối các chứng chỉ CA mới vào tệp đó hoặc bạn có thể thay thế toàn bộ gói.

Bạn cũng đang tự hỏi nơi để có được chứng chỉ? Tôi (và những người khác) khuyên dùng curl.haxx.se/ca. Trong một dòng:

curl https://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt

Vị trí Fedora Core 2 là /usr/share/ssl/certs/ca-bundle.crt.


Điều đó tốt, nhưng làm thế nào tôi có thể chắc chắn rằng chứng chỉ mà tôi thêm sẽ không bị mất trong lần cập nhật tiếp theo của ca-bundle.crt? Có nơi nào tôi có thể đặt cái mới nơi nó sẽ tự động được đưa vào không?
Andrew Schulman

Kể từ năm 2006, nâng cấp openssl không nên thay thế tệp ca-bundle.crt (xem rhn.redhat.com/errata/RHSA-2006-0661.html ). Tuy nhiên, nếu bạn đã cài đặt gói khác, như gói ca-cert được đề xuất bởi @mgorven, thì tôi hy vọng nó sẽ được ghi đè thủ công.
Nada

36

Cách được khuyến nghị để thực hiện điều đó trên các hệ thống RHEL 6+ là sử dụng công cụ update-ca-trust , hiện được cài đặt theo mặc định.

# cat /etc/pki/ca-trust/source/README 
This directory /etc/pki/ca-trust/source/ contains CA certificates and 
trust settings in the PEM file format. The trust settings found here will be
interpreted with a high priority - higher than the ones found in 
/usr/share/pki/ca-trust-source/.

=============================================================================
QUICK HELP: To add a certificate in the simple PEM or DER file formats to the
            list of CAs trusted on the system:

            Copy it to the
                    /etc/pki/ca-trust/source/anchors/
            subdirectory, and run the
                    update-ca-trust
            command.

            If your certificate is in the extended BEGIN TRUSTED file format,
            then place it into the main source/ directory instead.
=============================================================================

Please refer to the update-ca-trust(8) manual page for additional information

Do đó, bạn chỉ cần thả tập tin crt của mình vào /etc/pki/ca-trust/source/anchors/và để chạy công cụ. Công việc đã hoàn thành. Điều này là an toàn để làm, bạn không cần phải thực hiện bất kỳ sao lưu. Trang hướng dẫn đầy đủ có thể được tìm thấy ở đây: https://www.mankier.com/8/update-ca-trust


Xin chào, nó có làm việc cho bạn không? Tôi chỉ cố gắng theo kịch bản từ access.redhat.com/solutions/1549003 và nó không hoạt động với tôi.
Kirby

6

RHEL cung cấp chứng chỉ Mozilla CA như một phần của ca-certificatesgói (cài đặt này với yumnếu nó chưa được cài đặt). Để nói với cURL sử dụng chúng, hãy sử dụng --cacerttham số như vậy.

curl --cacert /etc/ssl/certs/ca-bundle.crt https://google.com/

Tôi đã thử yum install ca-certificatesvà nhậnNo package ca-certificates available
Andrew

1
RHEL6 có gói này; Tôi đoán bạn đang sử dụng một phiên bản cũ hơn. Thật không may, danh sách đã không thay đổi kể từ năm 2010, cảm ơn vì đã cập nhật cho chúng tôi.
Dan Pritts

Tôi đang sử dụng RHEL7 trên AWS EC2, tôi vừa nâng cấp gói của mình lên ca-certificates.noarch 0:2014.1.98-70.0.el7_0- nó không giải quyết được vấn đề của tôi, nhưng tôi nghĩ tôi đã thêm thông tin này.
DuffJ

6

Có lẽ phụ thuộc vào phiên bản nào của Redhat. Bạn có thể tìm thấy gói nào thực sự cập nhật tệp bằng cách thực hiện:

rpm -qf /etc/pki/tls/certs/ca-bundle.crt

Kết quả của tôi đã cho thấy rằng cần phải cập nhật openssl-0.9.8e-12.el5 .

Nếu không có chứng chỉ cập nhật trong bản phân phối của bạn, bạn phải cập nhật thủ công, theo câu trả lời của Nada.


6

Kể từ khi bình luận của Dan Pritts, Red Hat đã cập nhật các gói chứng chỉ cho các bản phát hành RHEL được hỗ trợ thường xuyên hơn; bạn có thể thấy điều này khá dễ dàng trong gói thay đổi. Chứng chỉ của RHEL 6 đã được cập nhật hai lần vào năm 2013 và hai lần vào năm 2014.

Tất cả các bản phân phối có liên quan và bản sao có liên quan / clone / có nguồn gốc đều cung cấp một tệp bó tại /etc/pki/tls/certs/ca-bundle.crtvà cùng một tệp tại /etc/pki/tls/cert.pem(trên các bản phân phối cũ hơn cert.pemlà một liên kết đến ca-bundle.crt; trên các bản phân phối mới hơn đều là các liên kết đến một đầu ra tệp theo update-ca-trust).

Trong RHEL 6 và mới hơn, gói này là một phần của gói 'chứng chỉ ca'. Trong RHEL 5 và trước đó, nó là một phần của gói 'openssl'.

Trong RHEL 6 với bản cập nhật https://rhn.redhat.com/errata/RHEA-2013-1596.html và bất kỳ RHEL mới hơn, hệ thống 'chứng chỉ hệ thống dùng chung' đều khả dụng (bạn phải chạy update-ca-trust enableđể kích hoạt nó) và tốt nhất phương pháp được đưa ra bởi lzap. Một lợi ích của hệ thống này là nó hoạt động cho các ứng dụng dựa trên NSS và GnuTLS cũng như các ứng dụng dựa trên OpenSSL. Lưu ý rằng bạn cũng có thể không tin tưởng một chứng chỉ bằng cách đặt nó trong thư mục /etc/pki/ca-trust/source/blacklist/.

Trong RHEL 5 trở lên (và RHEL 6 nếu bạn không muốn sử dụng hệ thống mới), bạn có thể tin tưởng các CA bổ sung bằng cách đặt các tệp chứng chỉ được định dạng PEM của họ với phần mở rộng.pem trong / etc / pki / tls / certs và c_rehashcũng có thể cần yum install /usr/bin/c_rehash). Điều này sẽ chỉ hoạt động đối với phần mềm sử dụng các cửa hàng tin cậy mặc định của OpenSSL. Điều này tốt hơn so với chỉnh sửa hoặc thay thế tệp bó vì nó cho phép bạn tiếp tục nhận các bản cập nhật chính thức cho tệp bó.

Phần mềm sử dụng trực tiếp một trong các vị trí tệp bó (thay vì yêu cầu OpenSSL sử dụng các cửa hàng ủy thác mặc định của hệ thống) sẽ không tôn trọng thay đổi; nếu bạn có phần mềm như vậy, bạn sẽ bị kẹt khi chỉnh sửa tệp bó (hoặc cải thiện phần mềm). Phần mềm hoàn toàn không sử dụng OpenSSL sẽ không tôn trọng chứng chỉ đã thêm.


3

Tôi chỉ phải làm điều này trên một hộp RHEL5 cũ. Tôi nhấn nút bắt 22 ... curl sẽ từ chối tải xuống https vì các chứng chỉ trên máy quá cũ để xác thực các certs curl.haxx.se.

Tôi đã sử dụng tùy chọn --insecure của curl để buộc tải xuống https. (Vâng, tôi biết ... đó là "không an toàn".)

curl https://curl.haxx.se/ca/cacert.pem --insecure -o /etc/pki/tls/certs/ca-bundle.crt


1

Đối với RHEL 6 , tôi đã có thể khắc phục điều này bằng cách cập nhật và cài đặt lại gói CA certs mới nhất từ ​​Red Hat:

sudo yum update ca-certificates
sudo yum reinstall ca-certificates

(Trong trường hợp của tôi, điều này là đủ để cho phép chứng chỉ ký "Hãy mã hóa X3" mới hơn được tin cậy.)


Lệnh đã làm việc cho tôi (CentOS 6) nhưng không giải quyết được vấn đề của tôi (với chứng chỉ được cấp bởi "DigiCert SHA2 Secure Server CA")
rinogo
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.