Curl nasıl düzeltilir: (60) SSL sertifikası: sudo kullanırken geçersiz sertifika zinciri


12

Bu yüzden Mavericks yükseltme curl'sinin sertifikalarla ilgili daha fazla sorunu var.

Kendinden imzalı sertifikası olan bir dosyayı web sunucumdan kıvırmaya çalışırken "SSL Sertifikası: Geçersiz sertifika zinciri" hatası alıyordu.

Bu, sertifikayı sistem anahtar zincirime ekleyerek ve burada ve burada bulduğum bilgilerde her zaman SSL'ye izin verecek şekilde ayarlayarak düzeltildi .

Bu iyi çalışıyor ve bir dosyayı kıvırdığımda düzgün indirir.

Ancak daha önce sudo ile kıvırmak çalıştırırsanız (örneğin sudo ile çalıştırılması gereken ve içinde bir kıvrılma yapan bir komut dosyası var) sonra aynı hata iletisine geri döndüm.

Kökün sistem anahtarlığından okumadığını tahmin ediyorum belki?

Bunu düzeltmenin bir yolunu bilen var mı?

Yanıtlar:


17

CA sertifikalarınızı dosya sisteminde (PEM biçiminde) saklarsanız, curl ile birlikte kullanmasını söyleyebilirsiniz

sudo curl --cacert /path/to/cacert.pem ...

Sertifika doğrulamasını aşağıdakilerle de kapatabilirsiniz:

sudo curl --insecure ...

Düzenleme: Geri bildirim ile ilgili olarak güncellendi

Bunu kalıcı olarak ayarlamak istiyorsanız .curlrc, ana dizininize bir dosya ve yer oluşturmanız gerekir . sudokomutlarında bu dosyaya ihtiyaç /var/rootduyulabilir. Dosya, komut satırı ile aynı seçenekleri alır, ancak tire içermez. Her satıra bir seçenek:

cacert=/path/to/my/certs.pem

Cevabınız için teşekkürler, sudo ile çalıştırılan komut dosyası üçüncü bir taraftan geliyor ve bu yüzden curl komutunun kendisini gerçekten değiştiremiyorum. Güvensizlik gerçekten bir seçenek değil. Bu küresel olarak yapılabilir mi?
Jacob Tomlinson

Bir .curlrc dosyası oluşturabilir ve ana klasörünüzde saklayabilirsiniz, ancak sudo kullanarak /var/root/.curlrc olması gerekebilir. Dosya, her satıra bir tane olmak üzere tire içermeyen seçenekler içermelidir. Yani "cacert = / path / to / my / certs.pem"
Dan

1
1 Bir kurarken root-Temin .curlrcyerine --insecure. Tam olarak söylediği gibi - ağ konumundaki bir saldırganın bunu yapması, MITM için önemsizdir ve kod enjekte eder.
zigg

Bunun için teşekkürler, aradığım şey gibi geliyor. Yarın deneyeceğim ve işe yararsa ödül kazanacağım.
Jacob Tomlinson

6

Kök, geçerli kullanıcı güven ayarlarından okunmaz, ancak hem yönetici güven ayarları hem de kök kullanıcıya özgü güven ayarları vardır. (Bunlar ayrıca sistem güven ayarlarından farklıdır .) Ayrıca, sertifika güven ayarlarının bir anahtarlığa yalnızca sertifika eklemekten biraz farklı olduğunu unutmayın; bir sertifikayı tam olarak eklemeden güvenilir olarak işaretleyebilirsiniz. (Buradaki durum benim için net değil ve gördüğüm dokümanlar belirsiz.)

Bir sertifikayı geçerli kullanıcınız için güvenilir olarak işaretleyebilirsiniz.

$ security add-trusted-cert /path/to/cert.pem

ama bu kök konusunda yardımcı olmaz. Şimdi tahmin edebileceğiniz gibi çözüm ya sudoyukarıdadır, bu çözüm daha sonra kök kullanıcı için özellikle güvenilir olarak işaretlenir:

$ sudo security add-trusted-cert /path/to/cert.pem

veya -dbayrağı yönetici güven ayarlarına eklemek için kullanmak için :

$ security add-trusted-cert -d /path/to/cert.pem

(OS X bunu onaylamak için bir şifre iletişim kutusu açacaktır.)

Son iki durumdan her ikisi için yeterli görünmektedir sudo curl.

Referans: https://developer.apple.com/library/mac/Documentation/Darwin/Reference/ManPages/man1/security.1.html


Soruda söylediğim gibi, bunları sistem anahtarlığına ve giriş anahtarlığına zaten ekledim.
Jacob Tomlinson

Gerçekten ne önerdiğimi denedin mi? Test ettim, tam olarak tarif ettiğiniz durumda ve işe yaradı. Tüm detaylar hakkında net değilim - dokümantasyon belirsiz - ancak sertifika güven ayarlarının sadece sertifikayı bir anahtarlığa eklemeyle eş anlamlı olmadığını ve yönetici sertifika güven ayarlarının her iki sistemden ayrı olarak mevcut olduğunu bilmelisiniz. kullanıcı ayarları / anahtarlıklar. (Karışımda kök kullanıcıya özgü kullanıcı ayarları da var gibi görünüyor.) Cevabımı bu noktada daha net olacak şekilde düzenledim. Lütfen bu çözümü deneyin.
Wes Campaigne

Evet, ilk gönderdiğinizde bu çözümü denedim. Sertifikalar sistem anahtarlığındadır ve güvenilir olarak ayarlanmıştır. Hala şans yok.
Jacob Tomlinson

5

Bu gerçekten çıktı ipucunda:

echo insecure >> ~/.curlrc

Yukarıdaki çözümü kullanmanın avantajı, tüm curlkomutlar için çalışmasıdır , ancak güvenli olmayan ve güvenilmeyen ana bilgisayarlara bağlanarak MITM saldırılarına neden olabileceği için önerilmez .


2

MacPorts kullanıyorsanız (ve bahsettiğiniz 3. taraf komut dosyası onu kaldırmaz $PATHveya çağırmazsa /usr/bin/curl) certsyncve curlbağlantı noktalarını bu sırayla yükleyebilirsiniz .

certsyncMacPorts kıvrımının sertifikaları otomatik olarak alması için sistem anahtarlığınızı $prefix/etc/openssl/cert.pembir $prefix/share/curl/curl-ca-bundle.crt -> $prefix/etc/openssl/cert.pemsymlink'e aktaracak ve yükleyecek bir araç ve karşılık gelen bir başlatma plistidir . certsyncsistem anahtarlığınızı değiştirdiğinizde oluşturulan dosyalar da otomatik olarak güncellenir.


Bunun için teşekkürler, mümkünse MacPorts kullanmaktan kaçınmak istiyorum.
Jacob Tomlinson


-1

İş yapmak için sudo curl(OSX Sierra'da) sertifikayı içeri aktarmak System.keychainve oraya güvenmek zorunda kaldık . Bu, Anahtarlık uygulamasında manuel olarak veya şu komut kullanılarak yapılabilir:

sudo security add-trusted-cert -d -k /Library/Keychains/System.keychain /path/to/cert.pem

Sertifikanın henüz orada alınmadığından emin olmak için -dSistem anahtarlığının yolunu hem belirtmek hem de manuel olarak ayarlamak önemliydi -k.

Komut olmadan çalışır sudo, ancak daha sonra komut dosyaları için bir engel olabilecek bir UI iletişim kutusu aracılığıyla parola ister.


Hatayı alıyorumSecCertificateCreateFromData: Unknown format in import.
rraallvv

Kim düşürdüyse, lütfen açıkça "OSX Sierra üzerine" yazdığımı bilin ve bu bizim için çalışan bir çözümdü. Daha yeni OSX sürümlerinde çalışmazsa, OSX desteği veya araç takımı değişmiş olabilir. Veya giriş dosyasının desteklenen bir biçimde olmadığı önceki yorumcu gibi bir sorun (soru bunu belirtmez).
Alexander Klimetschek
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.