SSL сертификати - OS X Mavericks

Опитвам се да се свържа с приложение на localhost, което използва SSL. Използвам Mac OS X Mavericks. Грешката, която получавам е следната:

Error sending cURL get request to https://dev.site.com:5555/version  
Error code: 60 Error msg: SSL certificate problem: Invalid certificate chain

Опитах се да добавя сертификати към веригата:

/usr/bin/security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" /etc/path/ca_key.pem 

Все още получава същата грешка.


person dzeno    schedule 08.12.2013    source източник


Отговори (4)


--cacert и --cert са повредени в OSX Mavericks.

Можете да прочетете повече за това тук: https://groups.google.com/forum/#!topic/munki-dev/oX2xUnoQEi4

Заобиколното решение е тук: http://curl.haxx.se/mail/archive-2013-10/0036.html, което показва, че трябва да импортирате сертификата като доверен системен сертификат:

Импортирайте сертификата в системния („Система“) или потребителския („влизане“) ключодържател с помощта на Keychain Access и го маркирайте като винаги надежден за основните правила на SSL и X.509.

person brandonscript    schedule 08.12.2013
comment
Докато Safari разпознава моя сертификат без никакви проблеми, curl все още не работи. Знаете ли подход на командния ред, който може да се използва за автоматизиране на процеса на импортиране (Safari не ми позволява да запазя сертификата в KeyChain) - person sorin; 13.01.2014
comment
Safari не ви позволява да го импортирате, но трябва да можете да го импортирате директно в System KeyChain. - person brandonscript; 13.01.2014
comment
Не мога да стигна до вашата връзка за заобиколно решение поради този проблем с моята верига от сертификати. - person jschmitter; 15.01.2019
comment
Цитирах съответните части. Импортирайте сертификата във вашата система или ключодържател за вход и го маркирайте като надежден - тогава може да се наложи да рестартирате браузъра. Това каза... ако не можете да се доверите на публичен сертификат, това звучи като съвсем различен проблем. - person brandonscript; 15.01.2019

В някои случаи ще бъде по-добре да използвате стандартен curl (напр. ако разработвате на Mac код за Linux или *BSD). В този случай можете да направите така:

  1. Инсталирайте Homebrew

  2. Инсталирайте curl със стандартна поддръжка на сертификати (без повече сертификати на Keychain).

    brew install curl --with-openssl && brew link curl --force

  3. Инсталирайте главни CA сертификати от http://curl.haxx.se/ca/cacert.pem в /usr/local/etc/openssl/certs/cacert.pem

  4. Добавете във вашия ~/.bash_profile

    export CURL_CA_BUNDLE=/usr/local/etc/openssl/certs/cacert.pem

  5. След 4 стъпки можете да използвате curl със сертификати от файл, а не от Keychain.

person Andrey Korchak    schedule 26.06.2014
comment
Трябваше да създам папката /usr/local/etc/openssl/certs, tnks! - person RckLN; 10.02.2015
comment
-force трябва да се замени с --force - person Brian Yeh; 26.01.2016
comment
Какво правят стъпки 3 и 4? Моят curl от mac работи и без тях. - person Hakan Baba; 08.12.2017
comment
@HakanBaba OS X Mavericks по подразбиране нямаше сертификати на сертифициращи органи. Curl изисква тези сертификати, за да се свърже със сървъри чрез SSL. - person Andrey Korchak; 09.12.2017

Има две неща, които можете да направите:

(1) Преобразувайте сертификата .pem в .p12:

openssl pkcs12 -export -out my_certificate.p12 -inkey my_certificate.pem -in my_certificate.pem`

и го използвайте с curl с PASSWORD, който избирате при конвертиране:

curl --cert my_certificate.p12:PASSWORD.

(2) Плъзнете .pem файла във вашия ключодържател, отворете информационния прозорец, задайте го на „винаги доверие“ за SSL и X.509 и отбележете COMMON-NAME. (име на сертификата)

curl --cert COMMON-NAME

И двете работят за мен на OSX 10.9 с cURL 7.35.0

person Bart    schedule 06.03.2014

Опцията --with-openssl вече не работи от https://github.com/Homebrew/homebrew-core/pull/36263

Просто инсталирайте curl-openssl вместо curl.

$ brew install curl-openssl

$ /usr/local/opt/curl-openssl/bin/curl --version
curl 7.64.1 (x86_64-apple-darwin18.2.0) libcurl/7.64.1 OpenSSL/1.0.2r zlib/1.2.11 brotli/1.0.7 c-ares/1.15.0 libssh2/1.8.2 nghttp2/1.38.0 librtmp/2.3
Release-Date: 2019-03-27
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: AsynchDNS brotli GSS-API HTTP2 HTTPS-proxy IPv6 Kerberos Largefile libz Metalink NTLM NTLM_WB SPNEGO SSL TLS-SRP UnixSockets
person Chris W    schedule 07.05.2019