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). В этом случае вы можете сделать так:
Установить Homebrew
Установите curl с поддержкой стандартных сертификатов (больше никаких сертификатов Keychain).
brew install curl --with-openssl && brew link curl --force
Установите корневые сертификаты CA из http://curl.haxx.se/ca/cacert.pem в /usr/local/etc/openssl/certs/cacert.pem
Добавьте в ваш ~/.bash_profile
export CURL_CA_BUNDLE=/usr/local/etc/openssl/certs/cacert.pem
После 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