Скручивание ошибок "no start line" LibreSSL после обновления до OSX High Sierra
Я пытаюсь подключиться к серверу с помощью curl; этот сервер требует файл сертификата.p12 и фразу-пароль. Это не было проблемой в течение нескольких недель, когда я запускал свою программу. Однако после обновления до High Sierra я теперь получаю ошибки LibreSSL. Мои коллеги под управлением Windows 7 и 10 также не имеют этой проблемы:
В терминале:
$ curl -k https://server_metadata_link/ --cert certificate.p12 --pass "пароль"
curl: (58) не удалось загрузить сертификат клиента PEM, ошибка LibreSSL:0906D06C: подпрограммы PEM:PEM_read_bio: нет строки начала (ключ не найден, неверная фраза или неправильный формат файла?)
В R:
> set_config (config (ssl_verifyhost = 0L, ssl_verifypeer = 0L))
> set_config (config (sslcert = certificate.p12, keypasswd = пароль))
> GET (" https://server_metadata_link/")
Ошибка в curl::curl_fetch_memory(url, handle = handle): не удалось загрузить клиентский сертификат PEM, ошибка LibreSSL:0906D06C: подпрограммы PEM:PEM_read_bio: нет начальной строки, (не найден ключ, неверная фраза или неправильный формат файла?)
Я бы предпочел не возвращаться в Сьерру, так как у меня есть коллега с новым Mac, который застрял в High Sierra. Я не думаю, что есть ошибка с сертификатами, как я уже сказал, это работало нормально до обновления до High Sierra. Изучив эту проблему, я думаю, что это может быть связано с переходом Mac с OpenSSL на LibreSSL в High Sierra. Я не знаю, какое влияние это может оказать на серверную часть, но это может объяснить, почему только у меня и моего коллеги есть ошибка, а у другого коллеги из Sierra нет.
Другая проблема может заключаться в том, что моя версия curl - 7.54.0 (как и моя коллега по High Sierra), а последняя - 7.58.0. Я не знаю, может ли это также вызывать проблему, но как отдельную проблему я не уверен, как заставить мой Mac использовать самую последнюю версию curl; так как он включен в Mac, Homebrew не позволит мне установить последнюю версию.
Единственное другое замечание, которое у меня есть, это то, что если я изменю конфигурацию R с "sslcert = certificate.p12" на "sslkey = certificate.p12" или команду терминала с "--cert certificate.p12" на "--key Certificate". p12 "Я получаю обычную ошибку 403, говорящую о том, что я не могу подключиться к серверу.
Буду признателен за любую помощь, и, пожалуйста, дайте мне знать, если есть какая-либо другая информация, которую я должен предоставить. Заранее спасибо.
1 ответ
Homebrew позволит вам установить последнюю версию homebrew, но она предназначена только для бочонков, поскольку OSX предоставляет более старую версию curl:
$ brew install curl
==> Downloading https://homebrew.bintray.com/bottles/curl-7.58.0.high_sierra.bottle.tar.gz
Already downloaded: /Users/kyle.varga/Library/Caches/Homebrew/curl-7.58.0.high_sierra.bottle.tar.gz
==> Pouring curl-7.58.0.high_sierra.bottle.tar.gz
==> Caveats
This formula is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.
If you need to have this software first in your PATH run:
echo 'export PATH="/usr/local/opt/curl/bin:$PATH"' >> ~/.zshrc
Вам нужно запустить команду экспорта для его запуска. После обновления $PATH вы должны получить
$ which -a curl
/usr/local/opt/curl/bin/curl
/usr/bin/curl
После этого, при запуске curl с файлом p12, он просит меня разблокировать связку ключей OSX и разрешает could not load PEM client certificate
ошибка.