Jadi karena ikal pemutakhiran Mavericks memiliki lebih banyak masalah dengan sertifikat.
Ketika mencoba meringkuk file dari server web saya dengan sertifikat yang ditandatangani sendiri itu mendapatkan kesalahan "Sertifikat SSL: rantai sertifikat tidak valid".
Ini diperbaiki dengan menambahkan sertifikat ke gantungan kunci sistem saya dan mengaturnya untuk selalu mengizinkan SSL, informasi yang saya temukan di sini dan di sini .
Ini berfungsi dengan baik dan ketika saya menggulung file itu mengunduh dengan benar.
Namun jika saya menjalankan curl dengan sudo sebelumnya (misalnya saya memiliki skrip yang perlu dijalankan dengan sudo dan melakukan curl di dalamnya) maka saya kembali ke pesan kesalahan yang sama.
Saya menduga root tidak membaca dari gantungan kunci sistem mungkin?
Adakah yang tahu cara untuk memperbaikinya?
root
tersedia.curlrc
sebagai gantinya--insecure
. Yang persis seperti yang dikatakannya — bagi penyerang di posisi jaringan untuk melakukannya, itu akan sepele bagi MITM dan menyuntikkan kode.Root tidak membaca dari pengaturan kepercayaan pengguna saat ini, tetapi ada pengaturan admin trust dan pengaturan trust khusus pengguna root. (Ini juga berbeda dari pengaturan kepercayaan sistem .) Perhatikan, juga, bahwa pengaturan kepercayaan sertifikat agak berbeda dari hanya menambahkan sertifikat ke gantungan kunci; Anda dapat menandai sertifikat sebagai tepercaya tanpa menambahkannya sepenuhnya. (Situasi tepatnya di sini tidak jelas bagi saya, dan dokumen yang saya lihat tidak jelas.)
Anda dapat menandai sertifikat sebagai tepercaya untuk pengguna Anda saat ini
tetapi itu tidak membantu dengan root. Solusinya, seperti yang mungkin Anda tebak sekarang, adalah untuk yang
sudo
di atas, yang kemudian menandainya sebagai tepercaya untuk pengguna root secara khusus:atau menggunakan
-d
bendera untuk menambahkannya ke pengaturan kepercayaan admin:(OS X akan memunculkan dialog kata sandi untuk mengonfirmasi yang ini.)
Salah satu dari dua yang terakhir tampaknya cukup untuk
sudo curl
.Referensi: https://developer.apple.com/library/mac/Documentation/Darwin/Reference/ManPages/man1/security.1.html
sumber
Ini benar-benar dalam petunjuk keluaran:
Keuntungan menggunakan solusi di atas adalah ia bekerja untuk semua
curl
perintah, tetapi tidak dianjurkan karena dapat memperkenalkan serangan MITM dengan menghubungkan ke host yang tidak aman dan tidak terpercaya.sumber
Jika Anda menggunakan MacPorts (dan skrip pihak ke-3 yang Anda sebutkan tidak menghapusnya
$PATH
atau menelepon/usr/bin/curl
), Anda dapat menginstalcertsync
dancurl
port dalam urutan ini.certsync
adalah alat dan daftar peluncuran yang sesuai yang akan mengekspor gantungan kunci sistem Anda ke$prefix/etc/openssl/cert.pem
dan menginstal symlink$prefix/share/curl/curl-ca-bundle.crt -> $prefix/etc/openssl/cert.pem
sehingga MacPorts curl akan secara otomatis mengambil sertifikat.certsync
juga akan secara otomatis memperbarui file yang dihasilkan ketika Anda mengubah gantungan kunci sistem Anda.sumber
Dokumentasi yang Anda cari ada di sini. Ini menjelaskan cara menggunakan cURL di Mavericks dan bagaimana memasok sertifikat Anda: http://curl.haxx.se/mail/archive-2013-10/0036.html
sumber
Untuk membuat
sudo curl
pekerjaan (pada OSX Sierra), kami harus mengimpor sertifikat keSystem.keychain
dan percaya di sana. Ini dapat dilakukan secara manual di aplikasi Keychain atau menggunakan perintah ini:Penting untuk menentukan
-d
dan secara manual mengatur jalur ke gantungan kunci Sistem melalui-k
untuk memastikan sertifikat benar-benar diimpor di sana jika belum.Perintah bekerja tanpa
sudo
, tetapi kemudian akan meminta kata sandi melalui dialog UI, yang mungkin menjadi rintangan untuk skrip.sumber
SecCertificateCreateFromData: Unknown format in import.