Apakah ikal memiliki opsi --tidak memeriksa sertifikat seperti wget?

447

Saya mencoba membuat permintaan ikal ke salah satu server pengembangan lokal kami yang menjalankan situs dev dengan sertifikat SSL yang ditandatangani sendiri. Saya menggunakan curl dari baris perintah.

Saya melihat beberapa posting blog yang menyebutkan bahwa Anda dapat menambahkan ke dalam daftar sertifikat atau menentukan sertifikat tertentu (ditandatangani sendiri) sebagai valid, tetapi apakah ada cara lain untuk mengatakan "jangan verifikasi" sertifikat ssl - seperti --no-check-certificateitu wget punya?

cwd
sumber
1
--insecuretidak akan berfungsi jika Anda memiliki versi php atau apache tertentu sebagaimana dirinci di superuser.com/questions/1015325/…
user3338098

Jawaban:

596

Iya. Dari halaman manual :

-k, --insecure

(TLS) Secara default, setiap sambungan koneksi SSL diverifikasi untuk aman. Opsi ini memungkinkan curl untuk melanjutkan dan beroperasi bahkan untuk koneksi server yang dinyatakan tidak aman.

Koneksi server diverifikasi dengan memastikan sertifikat server berisi nama yang tepat dan berhasil diverifikasi menggunakan toko sertifikat.

Lihat sumber daring ini untuk detail lebih lanjut: https://curl.haxx.se/docs/sslcerts.html

Lihat juga --proxy-insecure dan --cacert.

The referensi yang disebutkan dalam entri manualnya menjelaskan beberapa perilaku tertentu -k.

Perilaku ini dapat diamati dengan curlpermintaan untuk menguji halaman dari 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...
Freiheit
sumber
11
Sukai
Apakah ada cara di ikal konfigurasi untuk membuat opsi ini default?
Menang
4
@ Menang, itu akan menjadi ide yang mengerikan. Benar alias jika Anda perlu menggunakannya berulang kali, sehingga Anda tahu apa yang dilakukannya dan tidak sengaja mengirim kata sandi Anda tidak terenkripsi. alias insecure-curl="curl -k"
Alexander Huszagh
2
@AlexanderHuszagh Di tempat kerja, saya hanya menggunakan curl dari satu server dengan sertifikat yang ditandatangani sendiri; tidak pernah ada waktu saya ingin melakukan pengecekan sertifikat penuh. Hanya karena sesuatu tampak seperti ide yang mengerikan dalam banyak kasus tidak berarti selalu demikian.
Daniel H
4
@DanielH Itulah sebabnya saya menyarankan alias: sehingga Anda mendapatkan kenyamanan tambahan dengan pengetahuan eksplisit bahwa itu tidak aman. Alur kerja berubah: Anda harus tetap tahu dengan cara yang terbatas ketika Anda memperdagangkan keamanan untuk kenyamanan.
Alexander Huszagh
36

Anda dapat menggunakan perintah berikut untuk menerapkan perubahan untuk semua koneksi:

$ echo insecure >> ~/.curlrc

Pada Windows hanya membuat _curlrcfile teks dengan teks 'tidak aman' di dalam Anda %HOME%, %CURL_HOME%, %APPDATA%, %USERPROFILE%atau %USERPROFILE%\Application Datadirektori.

Keuntungan menggunakan solusi di atas adalah ia bekerja untuk semua curlperintah, tetapi tidak dianjurkan karena dapat memperkenalkan serangan MITM dengan menghubungkan ke host yang tidak aman dan tidak terpercaya.

kenorb
sumber
72
Ini sepertinya saran yang buruk: menonaktifkan pemeriksaan ini untuk semua koneksi tidak boleh menjadi default, bahkan jika Anda melakukan ini sendiri melalui konfigurasi per-pengguna. Jika Anda perlu menekan pemeriksaan keamanan, setidaknya lakukan sedikit demi sedikit.
Christopher Schultz
4
Kapan pun saya menggunakan ikal, saya mengontrol atau memercayai mesin di ujung lainnya.
Eric Hartford
11
@EricHartford: Yah, bagus untuk Anda, tapi itu masih tidak membuatnya menjadi saran umum yang bagus, Iho. Orang mungkin menggunakan curl, misalnya saat mengunduh homebrew di osx dan berakhir dengan versi modifikasi alat karena ia mengaktifkannya sebagai default secara membabi buta.
sebelum
10
Juga @EricHartford, Anda yakin selalu melakukan hal-hal ikal tepercaya? Apakah Anda pernah menjalankan skrip instalasi bash yang Anda dapatkan dari internet? Memang, Anda bisa berada dalam kegelapan di sana, tetapi ini meningkatkan peluang.
Zlatko
ini adalah @EricHartford yang asli. Pesan sebelumnya telah diposting oleh orang lain yang menyamar sebagai saya. Karena saya memercayai semua mesin ;-)
Anand Rockzz
5

Anda menggunakan sertifikat yang ditandatangani sendiri. Mengapa Anda tidak menambahkan CA ke bundel CA tepercaya Anda (Linux) atau menambahkan ke toko Sertifikat tepercaya (windows)? Atau cukup gunakan --cacert /Path/to/filedengan isi file cert yang ditandatangani sendiri tepercaya Anda.

Jawaban lainnya adalah menjawab pertanyaan berdasarkan wgetperbandingan. Namun, pertanyaan sebenarnya adalah bagaimana cara mempertahankan koneksi tepercaya dengan sertifikat yang ditandatangani sendiri menggunakan curl. Berdasarkan banyak komentar, keamanan adalah perhatian utama dalam salah satu jawaban ini, dan jawaban terbaik adalah mempercayai sertifikat yang ditandatangani sendiri dan membiarkan curlpemeriksaan keamanan tetap utuh.

pengguna3258557
sumber