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

Я пытаюсь подключиться к приложению на локальном хосте, которое использует 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 не позволяет вам импортировать его, но вы должны иметь возможность импортировать его непосредственно в системную цепочку ключей. - person brandonscript; 13.01.2014
comment
Я не могу перейти по вашей ссылке на обходной путь из-за этой самой проблемы с моей цепочкой сертификатов. - person jschmitter; 15.01.2019
comment
Я процитировал соответствующие фрагменты. Импортируйте сертификат в свою систему или войдите в цепочку ключей и пометьте его как доверенный — тогда вам может потребоваться перезапустить браузер. Тем не менее ... если вы не можете доверять общедоступному сертификату, это звучит как совсем другая проблема. - person brandonscript; 15.01.2019

В некоторых случаях будет лучше использовать стандартный curl (например, если вы разрабатываете на Mac код для Linux или *BSD). В этом случае вы можете сделать так:

  1. Установите домашнее пиво.

  2. Установите curl с поддержкой стандартных сертификатов (больше никаких сертификатов Keychain).

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

  3. Установите корневые сертификаты ЦС с 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 с сертификатами из файла, а не из цепочки для ключей.

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? У меня завиток от мака работал и без них. - 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