Làm cách nào để sửa lỗi chứng chỉ khi chạy wget trên URL HTTPS trong Cygwin?


164

Ví dụ: chạy wget https://www.dropbox.comkế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:


131

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-certificatesthô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/certsvào ~/.wgetrctệp.

Bạn cũng có thể khắc phục điều đó bằng cách chạy ln -sT /usr/ssl /etc/sslnhư đượ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 đó.


5
Cảm ơn câu trả lời này và đặc biệt là lời nhắc về tệp ~ / .wgetrc. Là người dùng MacPorts, certs của tôi được đặt tại / opt / local / etc / openssl, một thực tế mà tôi hy vọng ai đó thấy tiện dụng.
Bryce Anderson

3
Và đối với fink, họ đang ở /sw/etc/ssl/certs/ca-bundle.crt, một phần của ca-bundlegói - như được mô tả ở đây .
jhfrontz

Không chắc chắn nếu đó là một lỗi đánh máy nhưng ln -s /etc/ssl /usr/ssllàm việc cho tôi.
zbest

240

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-certificatetù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.


1
Điều này làm việc cho tôi. Các giải pháp khác liên quan đến việc cài đặt và cập nhật các chứng chỉ đã không giải quyết được nó. Trong trường hợp cụ thể của tôi không có mối quan tâm bảo mật.
tuyên bố

103

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

1
apt-get là trên cygwin? apt-get là trên redgat? ;)
Denis Chenu

5
chứng chỉ ca đã được cài đặt trong máy tính của tôi. Chạy update-ca-certificatesgiải quyết vấn đề.
Tomás Fox

Điều này cũng hoạt động trên Synology DS215j của tôi với Debian chroot.
microspino

@fox update-ca-certificateslà một lệnh ubfox , không có sẵn trong debian.
Devy

@Devy Nó thực sự hoạt động trên mâm xôi pi của tôi chạy debian wheezy
Luis Lobo Borobia

13

Đầ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 wgetcần có thêm một liên kết tượng trưng:

ln -sT /usr/ssl /etc/ssl

6
Đây có phải là không an toàn để cài đặt cơ quan cấp chứng chỉ gốc từ một trang web ngẫu nhiên, đặc biệt là với haxx trong tên?
Chloe

6
@Chloe curl.haxx.se đó là trang dev của cURL. Những người khá đáng tin cậy.
ylluminate

Làm thế nào để bạn sửa nó mà không cong?
Đánh dấu Lakata

1
omfg liên kết tượng trưng là những gì tôi đã bỏ lỡ ... đã tìm kiếm 30 phút để sửa lỗi 1 lớp lót> <
Populus

4
Đây là hacky trên nhiều cấp độ. Trước tiên, bạn không cần tải xuống các chứng chỉ theo cách thủ công vì có gói Cygwin cho cái gọi là "chứng chỉ ca". Thứ hai, symlinking sẽ chỉ hoạt động nếu bạn có quyền truy cập quản trị vào hệ thống hoặc bạn đã cài đặt cygwin cho tài khoản người dùng của mình, điều này không phải lúc nào cũng đúng, vì vậy mã không đáng tin cậy.
Shnatsel

10

Có thể điều này sẽ giúp:

wget --no-check-certificate https://blah-blah.tld/path/filename

1
Thêm một điều nữa: Tình huống này cũng có thể xảy ra nếu bạn đang sử dụng Kaspersky AntiVirus hoặc cùng một phần mềm (theo mặc định, nó sẽ thay thế chứng chỉ SSL được xác minh thông thường của trang web của họ) - vì vậy, bạn có thể vô hiệu hóa kiểm tra lưu lượng SSL trong phần mềm Antivirus.
Alexey Soloviev

4
apt-get install ca-certificates 

Sự skhác biệt


Không có apt-gettrong Cygwin, vì vậy điều này không hoạt động.
jlh

1

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/anchorstệp .pem (mã hóa base64) và chạyupdate-ca-trust



-4

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.


Điều này không liên quan đến Cygwin
Synthead 8/03/2016
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.