2013-12-08 6 views
10

Я пытаюсь подключиться к приложению на localhost, которое использует SSL. Я использую Mac OS X Mavericks. Ошибка я получаю следующий:SSL-сертификаты - 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 

все еще получаю ту же ошибку.

ответ

5

--cacert и --cert нарушены в OSX Mavericks.

Вы можете прочитать об этом здесь: https://groups.google.com/forum/#!topic/munki-dev/oX2xUnoQEi4

Обходной здесь: http://curl.haxx.se/mail/archive-2013-10/0036.html, который указывает на то, что вам нужно импортировать сертификат в качестве доверенного системы CERT:

Импорт сертификата в систему («Системный») или пользовательский («логин») с использованием Keychain Access и пометьте его, как всегда, доверенный для базовой политики SSL и X.509.

+1

Хотя Safari не признает [мой сертификат] (https://sbarnea.com) без проблем, завиток все еще не работает. Знаете ли вы подход командной строки, который можно использовать для автоматизации процесса импорта (Safari не позволяет мне сохранять сертификат в KeyChain) – sorin

+0

Safari не позволяет вам импортировать его, но вы должны иметь возможность импортировать его непосредственно в System KeyChain. – brandonscript

2

Есть две вещи, которые вы можете сделать:

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

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

и использовать его с завитком с PASSWORD вы выбираете при преобразовании:

curl --cert my_certificate.p12:PASSWORD. 

(2) Перетащите файл .pem в связке ключей, откройте infopane, установите его в «всегда доверять» для SSL и X.509, и обратите внимание на COMMON-NAME. (Имя сертификата)

curl --cert COMMON-NAME 

Оба работают для меня на OSX 10.9 с Curl 7.35.0

22

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

  1. Установите Homebrew

  2. Установите ротор со стандартной поддержкой сертификатов (не более Keychain CERTS).

    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 шагов вы можете использовать завиток с сертификатами из файла, а не из брелка ,

+0

Мне пришлось создать папку/usr/local/etc/openssl/certs, tnks! – RckLN

+1

-force необходимо заменить на -force –

+0

Что делают шаги 3 и 4? Мой скручивание от mac работало даже без них. –

 Смежные вопросы

  • Нет связанных вопросов^_^