2015-02-27 18 views
9

Tôi đã cố gắng tải xuống hình ảnh qua wget nhưng tôi gặp lỗi: Không thể thiết lập kết nối SSL.Không thể thiết lập kết nối SSL khi wget trên Ubuntu 14.04 LTS

wget https://www.website.com/image.jpg 
--2015-02-26 01:30:17-- https://www.website.com/image.jpg 
Resolving www.website.com (www.website.com)... xx.xxx.xx.xx 
Connecting to www.website.com (www.website.com)|xx.xxx.xx.xx|:443... connected. 
Unable to establish SSL connection. 

trường hợp thử nghiệm của tôi:

  1. Sử dụng Ubuntu 12.04.4 LTS (GNU/Linux 3.8.0-44-generic x86_64), GNU wget 1.13.4 xây dựng trên linux-gnu, tôi đã có thể tải xuống hình ảnh bằng cách sử dụng mã ở trên. Không có lỗi.
  2. Sử dụng Ubuntu 14.04 LTS (GNU/Linux 3.13.0-24-generic x86_64), GNU Wget 1.15 được xây dựng trên linux-gnu, tôi không thể tải xuống hình ảnh bằng cách sử dụng mã ở trên.

Biến khác là www.website.com sử dụng TLS 1.0. Tôi không có một ý tưởng làm thế nào điều này ảnh hưởng đến wget. Nhưng nếu tôi wget một hình ảnh từ các trang web TLS 1.2 tôi không nhận được bất kỳ lỗi kết nối ssl từ cả hai trường hợp thử nghiệm.

Ubuntu 14.04 hoặc wget 1.15 có tương thích với các trang web TLS 1.0 không? Tôi có cần cài đặt/tải xuống bất kỳ thư viện/phần mềm nào để bật kết nối này không?

+0

này nghe có vẻ như 'wget' là không trong khi bắt tay SSL. Điều này rất có thể xảy ra vì Ubuntu 14.04 của bạn không tin tưởng tên miền www.website.com. Bạn có thể cần phải cài đặt chứng chỉ máy chủ của trang web này vào cửa hàng tin cậy của bạn. –

+0

Nếu lỗi này xảy ra với bất kỳ trang web SSL nào khác, hãy thêm thông tin này vào câu hỏi của bạn. Nếu điều này chỉ xảy ra với một trang web cụ thể và nếu trang web này hoạt động trong trình duyệt, hãy hiển thị URL chính xác. Nếu trang web này không hoạt động trong trình duyệt, nó là một vấn đề nếu chính trang web đó. –

+0

@TimBiegeleisen Tôi đã tải xuống chứng chỉ www.website.com thông qua Chrome: nhấp vào biển báo khóa -> tab kết nối -> liên kết thông tin chứng chỉ -> chi tiết -> Liên kết URI. Sau đó, tôi sao chép nó vào máy chủ, sau đó làm theo cách cài đặt chứng chỉ gốc (http://askubuntu.com/questions/73287/how-do-i-install-a-root-certificate). Sau đó, sau '/ etc/ssl/certs $ ls', tôi tìm thấy chứng chỉ ở đó. Tôi đã cố gắng để 'wget' một lần nữa nhưng tôi vẫn nhận được cùng một lỗi. – xanderlopez

Trả lời

11

... right now it happens only to the website I'm testing. I can't post it here because it's confidential.

Sau đó, tôi đoán đây là một trong các trang web không tương thích với TLS1.2. Các openssl như được sử dụng trong 12.04 không sử dụng TLS1.2 ở phía khách hàng trong khi với 14.04 nó sử dụng TLS1.2 mà có thể giải thích sự khác biệt. Để làm việc xung quanh, hãy thử sử dụng rõ ràng --secure-protocol=TLSv1. Nếu điều này không giúp kiểm tra xem bạn có thể truy cập trang web với openssl s_client -connect ... (có thể là không) và với openssl s_client -tls1 -no_tls1_1, -no_tls1_2 ....

Xin lưu ý rằng nó có thể là nguyên nhân khác, nhưng điều này là có thể xảy ra nhất và không có quyền truy cập vào trang web mọi thứ chỉ là suy đoán.

Vấn đề được giả định chi tiết: Thông thường, khách hàng sử dụng cái bắt tay tương thích nhất để truy cập máy chủ. Đây là cái bắt tay SSLv23 tương thích với các phiên bản SSL cũ hơn nhưng thông báo phiên bản TLS tốt nhất mà máy khách hỗ trợ, để máy chủ có thể chọn phiên bản tốt nhất. Trong trường hợp này, wget sẽ thông báo TLS1.2. Nhưng có một số máy chủ bị hỏng mà không bao giờ giả định rằng một ngày sẽ có một cái gì đó giống như TLS1.2 và từ chối bắt tay nếu khách hàng thông báo hỗ trợ cho phiên bản mới nóng này (từ năm 2008!) Thay vì chỉ phản hồi với phiên bản tốt nhất của máy chủ hỗ trợ. Để truy cập vào các máy chủ bị hỏng này, khách hàng phải nói dối và tuyên bố rằng nó chỉ hỗ trợ TLS1.0 làm phiên bản tốt nhất.

Is Ubuntu 14.04 or wget 1.15 not compatible with TLS 1.0 websites? Do I need to install/download any library/software to enable this connection?

Vấn đề là máy chủ chứ không phải máy khách. Hầu hết các trình duyệt đều hoạt động xung quanh các máy chủ bị hỏng này bằng cách thử lại với phiên bản thấp hơn. Hầu hết các ứng dụng khác không thành công vĩnh viễn nếu lần thử kết nối đầu tiên không thành công, nghĩa là chúng không tự hạ cấp và một ứng dụng phải thực thi một phiên bản khác bằng một số cài đặt ứng dụng cụ thể.

1

Nếu bạn tin tưởng máy chủ, hoặc thêm các chứng chỉ hợp lệ, xác định --no-check-certificate hoặc thêm:

check_certificate = off 

vào ~/.wgetrc của bạn.

Trong một số trường hợp hiếm hoi, thời gian hệ thống của bạn có thể không đồng bộ do đó làm mất hiệu lực chứng chỉ.

1

bạn phải đang sử dụng phiên bản cũ của wget tôi có cùng vấn đề. tôi đã sử dụng wget 1.12.so để giải quyết vấn đề này có 2 cách: Cập nhật wget hoặc sử dụng curl

curl -LO 'https://example.com/filename.tar.gz' 
+0

nó nên được curl không culr. xin lỗi đã thay đổi nó, nhưng tôi chưa được phép – Markus

Các vấn đề liên quan