Curl có tùy chọn --no-check-cert như wget không?


446

Tôi đang cố gắng thực hiện một yêu cầu curl đến một trong những máy chủ phát triển địa phương của chúng tôi đang chạy một trang dev với chứng chỉ SSL tự ký. Tôi đang sử dụng curl từ dòng lệnh.

Tôi thấy một số bài đăng trên blog đề cập rằng bạn có thể thêm vào danh sách các giấy chứng nhận hoặc chỉ định một cụ thể (tự ký) chứng nhận là hợp lệ, nhưng là có một nhận tất cả cách khác để nói "không xác minh" cert ssl - như --no-check-certificaterằng wget có?


1
--insecuresẽ không hoạt động nếu bạn có một phiên bản php hoặc apache nhất định như được nêu chi tiết trong superuser.com/questions/1015325/
mẹo

Câu trả lời:


595

Đúng. Từ trang hướng dẫn :

-k, - bảo mật

(TLS) Theo mặc định, mọi kết nối SSL được thực hiện đều được xác minh là an toàn. Tùy chọn này cho phép curl tiến hành và hoạt động ngay cả đối với các kết nối máy chủ nếu không được coi là không an toàn.

Kết nối máy chủ được xác minh bằng cách đảm bảo chứng chỉ của máy chủ chứa đúng tên và xác minh thành công bằng cách sử dụng cửa hàng chứng chỉ.

Xem tài nguyên trực tuyến này để biết thêm chi tiết: https://curl.haxx.se/docs/sslcerts.html

Xem thêm --proxy-không an toàn và --cacert.

Tài liệu tham khảo được đề cập trong mục manpage đó mô tả một số hành vi cụ thể của -k.

Những hành vi này có thể được quan sát với curlcác yêu cầu kiểm tra các trang từ BadSSL.com

curl -X GET https://wrong.host.badssl.com/
curl: (51) SSL: no alternative certificate subject name matches target host name 'wrong.host.badssl.com'

curl -k -X GET https://wrong.host.badssl.com/
..returns HTML content...

11
Yêu thực tế là nó có một tùy chọn ngắn một chữ cái
kizzx2

Có cách nào trong cấu hình curl để làm cho tùy chọn này mặc định không?
Thắng

4
@Wins, đó sẽ là một ý tưởng khủng khiếp. Phải là bí danh nếu bạn cần sử dụng nó nhiều lần, để bạn biết nó làm gì và không vô tình gửi mật khẩu của bạn không được mã hóa. alias insecure-curl="curl -k"
Alexander Huszagh

2
@AlexanderHuszagh Tại nơi làm việc, tôi chỉ sử dụng curl từ một máy chủ duy nhất có chứng chỉ tự ký; không bao giờ có thời gian tôi muốn làm kiểm tra chứng chỉ đầy đủ. Chỉ vì một cái gì đó có vẻ như là một ý tưởng khủng khiếp trong hầu hết các trường hợp không có nghĩa là nó luôn luôn như vậy.
Daniel H

4
@DanielH Đó là lý do tại sao tôi đề xuất một bí danh: để bạn có thêm sự thuận tiện với kiến ​​thức rõ ràng rằng nó không an toàn. Thay đổi quy trình làm việc: bạn vẫn nên biết trong một số thời trang hạn chế khi bạn giao dịch bảo mật để thuận tiện, tuy nhiên.
Alexander Huszagh

36

Bạn có thể sử dụng lệnh sau để áp dụng các thay đổi cho tất cả các kết nối:

$ echo insecure >> ~/.curlrc

Trên Windows chỉ cần tạo _curlrcfile văn bản với văn bản 'không an toàn' trong nó trong của bạn %HOME%, %CURL_HOME%, %APPDATA%, %USERPROFILE%hoặc %USERPROFILE%\Application Datathư mục.

Ưu điểm của việc sử dụng giải pháp trên là nó hoạt động cho tất cả curlcác lệnh, nhưng không được khuyến khích vì nó có thể giới thiệu các cuộc tấn công MITM bằng cách kết nối với các máy chủ không an toàn và không tin cậy.


72
Đây có vẻ là lời khuyên tồi: vô hiệu hóa các kiểm tra này cho tất cả các kết nối không nên là mặc định, ngay cả khi bạn tự làm điều này thông qua cấu hình trên mỗi người dùng. Nếu bạn cần phải ngăn chặn kiểm tra an ninh, ít nhất hãy làm điều đó từng phần.
Christopher Schultz

4
Bất cứ khi nào tôi đang sử dụng curl, tôi sẽ điều khiển hoặc tin tưởng vào máy ở đầu kia.
Eric Hartford

11
@EricHartford: Tốt, tốt cho bạn, nhưng điều đó vẫn không làm cho nó trở thành một lời khuyên chung tốt. Người ta có thể sử dụng curl, ví dụ như khi tải xuống homebrew trên osx và kết thúc với một phiên bản sửa đổi của các công cụ vì anh ta kích hoạt nó như một cách mặc định một cách mù quáng.
vào

10
Ngoài ra @EricHartford bạn có chắc là bạn luôn làm những thứ đáng tin cậy không? Bạn đã bao giờ chạy bất kỳ tập lệnh cài đặt bash nào bạn nhận được từ internet? Cấp, dù sao bạn cũng có thể ở trong màu đen, nhưng điều này làm tăng cơ hội.
Zlatko

đây là @EricHartford thực sự. Tin nhắn trước đó được đăng bởi một người khác mạo danh tôi. Bởi vì tôi đã tin tưởng tất cả các máy ;-)
Anand Rockzz

5

Bạn đang sử dụng một chứng chỉ tự ký. Tại sao bạn không gắn CA vào gói CA đáng tin cậy (Linux) hoặc thêm vào kho Chứng chỉ tin cậy (windows)? Hoặc đơn giản là sử dụng --cacert /Path/to/filevới nội dung của tệp chứng chỉ tự ký đáng tin cậy của bạn.

Các câu trả lời khác đang trả lời câu hỏi dựa trên wgetso sánh. Tuy nhiên, câu hỏi thực sự là làm thế nào để tôi duy trì kết nối đáng tin cậy với chứng chỉ tự ký bằng cách sử dụng curl. Dựa trên nhiều ý kiến ​​bảo mật là mối quan tâm hàng đầu trong bất kỳ câu trả lời nào trong số những câu trả lời này và câu trả lời tốt nhất sẽ là tin tưởng vào chứng chỉ tự ký và curlgiữ nguyên các kiểm tra bảo mật.

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.