Odkąd curl aktualizacji Mavericks ma więcej problemów z certyfikatami.
Podczas próby zwinięcia pliku z mojego serwera internetowego za pomocą certyfikatu z podpisem własnym pojawia się błąd „Certyfikat SSL: nieprawidłowy łańcuch certyfikatów”.
Zostało to poprawione poprzez dodanie certyfikatu do mojego pęku kluczy systemu i ustawienie go tak, aby zawsze zezwalał na SSL, informacje, które znalazłem tu i tutaj .
Działa to dobrze, a kiedy zwijam plik, jest on pobierany poprawnie.
Jeśli jednak wcześniej uruchamiam curl za pomocą sudo (np. Mam skrypt, który należy uruchomić za pomocą sudo i robi w nim curl), wrócę do tego samego komunikatu o błędzie.
Zgaduję, że root nie może odczytać z systemowego pęku kluczy?
Czy ktoś wie, jak to naprawić?
root
-dostępne.curlrc
zamiast--insecure
. Dokładnie tak, jak to mówi - aby atakujący znajdujący się w sieci mógł to zrobić, MITM i wstrzyknięcie kodu byłoby banalne.Root nie odczytuje z bieżących ustawień zaufania użytkownika, ale istnieją zarówno ustawienia zaufania administratora, jak i ustawienia zaufania specyficzne dla użytkownika root. (Są one również różne od ustawień zaufania systemu .) Należy również pamiętać, że ustawienia zaufania certyfikatów różnią się nieco od dodania certyfikatu do pęku kluczy; możesz oznaczyć certyfikat jako zaufany bez pełnego dodawania. (Dokładna sytuacja tutaj nie jest dla mnie jasna, a dokumenty, które widziałem, są niejasne.)
Możesz oznaczyć certyfikat jako zaufany dla bieżącego użytkownika jako
ale to nie pomaga w rootowaniu. Rozwiązanie, jak można się teraz domyślać, odnosi się do
sudo
powyższego, co oznacza, że jest to szczególnie zaufane dla użytkownika root:lub użyć
-d
flagi, aby dodać ją do ustawień zaufania administratora:(OS X wyświetli okno dialogowe hasła, aby je potwierdzić).
Każdy z dwóch ostatnich wydaje się wystarczający
sudo curl
.Odniesienie: https://developer.apple.com/library/mac/Documentation/Darwin/Reference/ManPages/man1/security.1.html
źródło
To jest tak naprawdę w podpowiedzi wyjściowej:
Zaletą zastosowania powyższego rozwiązania jest to, że działa ono dla wszystkich
curl
poleceń, ale nie jest zalecane, ponieważ może wprowadzać ataki MITM , łącząc się z niepewnymi i niezaufanymi hostami.źródło
Jeśli używasz MacPorts (a wspomniany skrypt innej firmy nie usuwa go
$PATH
ani nie wywołuje/usr/bin/curl
), możesz zainstalować portycertsync
icurl
w tej kolejności.certsync
jest narzędziem i odpowiednią listą uruchomieniową, która wyeksportuje breloczek do systemu$prefix/etc/openssl/cert.pem
i zainstaluje dowiązanie symboliczne,$prefix/share/curl/curl-ca-bundle.crt -> $prefix/etc/openssl/cert.pem
dzięki czemu curl MacPorts automatycznie odbierze certyfikaty.certsync
automatycznie zaktualizuje również wygenerowane pliki po zmianie pęku kluczy systemu.źródło
Dokumentacja, której szukasz, znajduje się tutaj. Wyjaśnia, jak używać cURL na Mavericks i jak dostarczać certyfikaty: http://curl.haxx.se/mail/archive-2013-10/0036.html
źródło
Aby
sudo curl
działać (w OSX Sierra), musieliśmy zaimportować certyfikat doSystem.keychain
i tam zaufać. Można to zrobić ręcznie w aplikacji pęku kluczy lub za pomocą tego polecenia:Ważne było zarówno określenie, jak
-d
i ręczne ustawienie ścieżki do pęku kluczy Systemu,-k
aby upewnić się, że certyfikat rzeczywiście zostanie tam zaimportowany, jeśli jeszcze tego nie zrobił.Polecenie działa bez
sudo
, ale następnie poprosi o hasło w oknie dialogowym interfejsu użytkownika, co może być przeszkodą dla skryptów.źródło
SecCertificateCreateFromData: Unknown format in import.