Ví dụ: chạy wget https://www.dropbox.com
kết quả trong các lỗi sau:
ERROR: The certificate of `www.dropbox.com' is not trusted.
ERROR: The certificate of `www.dropbox.com' hasn't got a known issuer.
Ví dụ: chạy wget https://www.dropbox.com
kết quả trong các lỗi sau:
ERROR: The certificate of `www.dropbox.com' is not trusted.
ERROR: The certificate of `www.dropbox.com' hasn't got a known issuer.
Câu trả lời:
Nhìn vào các giải pháp hacky hiện tại ở đây, tôi cảm thấy tôi phải mô tả một giải pháp thích hợp sau tất cả.
Trước tiên, bạn cần cài đặt gói cygwin ca-certificates
thông qua setup.exe của Cygwin để lấy chứng chỉ.
KHÔNG sử dụng curl hoặc hack tương tự để tải xuống chứng chỉ (như lời khuyên trả lời lân cận) bởi vì điều đó về cơ bản không an toàn và có thể làm tổn hại hệ thống.
Thứ hai, bạn cần nói cho wget biết chứng chỉ của bạn ở đâu, vì nó không nhận chúng theo mặc định trong môi trường Cygwin. Nếu bạn có thể làm điều đó với tham số dòng lệnh --ca-directory=/usr/ssl/certs
(tốt nhất cho shell script) hoặc bằng cách thêm ca_directory = /usr/ssl/certs
vào ~/.wgetrc
tệp.
Bạn cũng có thể khắc phục điều đó bằng cách chạy ln -sT /usr/ssl /etc/ssl
như được chỉ ra trong một câu trả lời khác, nhưng điều đó sẽ chỉ hoạt động nếu bạn có quyền truy cập quản trị vào hệ thống. Các giải pháp khác tôi mô tả không yêu cầu điều đó.
ln -s /etc/ssl /usr/ssl
làm việc cho tôi.
Nếu bạn không quan tâm đến việc kiểm tra tính hợp lệ của chứng chỉ, chỉ cần thêm --no-check-certificate
tùy chọn trên dòng lệnh wget. Điều này làm việc tốt cho tôi.
LƯU Ý: Điều này mở ra cho bạn các cuộc tấn công trung gian (MitM) và không được khuyến nghị cho bất cứ điều gì bạn quan tâm về bảo mật.
Nếu vấn đề là CA gốc đã biết bị thiếu và khi bạn đang sử dụng ubfox hoặc debian, thì bạn có thể giải quyết vấn đề với một dòng này:
sudo apt-get install ca-certificates
update-ca-certificates
giải quyết vấn đề.
update-ca-certificates
là một lệnh ubfox , không có sẵn trong debian.
Đầu tiên, chứng chỉ SSL cần được cài đặt. Hướng dẫn (dựa trên https://stackoverflow.com/a/4454754/278488 ):
pushd /usr/ssl/certs
curl http://curl.haxx.se/ca/cacert.pem | awk 'split_after==1{n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
c_rehash
Ở trên là đủ để sửa chữa curl
, nhưng wget
cần có thêm một liên kết tượng trưng:
ln -sT /usr/ssl /etc/ssl
Có thể điều này sẽ giúp:
wget --no-check-certificate https://blah-blah.tld/path/filename
Tôi gặp vấn đề tương tự và đã khắc phục bằng cách tạm thời vô hiệu hóa phần mềm chống vi-rút của mình (Kaspersky Free 18.0.0.405). AV này có mô-đun chặn HTTPS tự động tự ký tất cả các chứng chỉ mà nó tìm thấy trong các phản hồi HTTPS.
Wget từ Cygwin không biết gì về chứng chỉ gốc AV, vì vậy khi nhận thấy chứng chỉ của trang web đã được ký với chứng chỉ không tin cậy, nó sẽ in lỗi đó.
Để sửa lỗi này vĩnh viễn mà không tắt AV, bạn nên sao chép chứng chỉ gốc AV từ kho chứng chỉ Windows sang /etc/pki/ca-trust/source/anchors
tệp .pem (mã hóa base64) và chạyupdate-ca-trust
Nếu bạn đang sử dụng windows, chỉ cần vào bảng điều khiển, nhấp vào cập nhật tự động, sau đó nhấp vào liên kết Trang web Windows Update. Chỉ cần làm theo các bước. Ít nhất điều này hoạt động với tôi, không có thêm chứng chỉ nào, tức là bất cứ khi nào tôi truy cập https://www.dropbox.com như trước đây.