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 

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

3 ответа

Решение

--cacert а также --cert сломаны в OSX Mavericks.

Подробнее об этом можно прочитать здесь: https://groups.google.com/forum/.

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

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

В некоторых случаях будет лучше использовать стандартный 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.

Вы можете сделать две вещи:

(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 в цепочку для ключей, откройте информационную панель, установите для него значение "всегда доверять" для SSL и X.509 и обратите внимание на COMMON-NAME, (название сертификата)

curl --cert COMMON-NAME

У меня оба работают на OSX 10.9 с cURL 7.35.0

Опция --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
Другие вопросы по тегам