curl 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 = сертификат.p12, keypasswd = пароль))

> GET("https://server_metadata_link")

Ошибка в curl::curl_fetch_memory(url, handle = handle): не удалось загрузить сертификат клиента PEM, ошибка LibreSSL: 0906D06C:подпрограммы PEM:PEM_read_bio:нет стартовой строки, (ключ не найден, неверная фраза-пароль или неправильный формат файла? )

Я бы предпочел не возвращаться к Sierra, так как у меня есть коллега с новым 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, говорящую, что я не могу подключиться к серверу.

Любая помощь будет оценена по достоинству, и, пожалуйста, дайте мне знать, если есть какая-либо другая информация, которую я должен предоставить. Заранее спасибо.


person Margaret S.    schedule 15.02.2018    source источник
comment
Сервер не может требовать файл p12; он вообще не видит файлы клиента. Для этого требуется сертификат и ключ, которые у вас есть в файле p12. Сборки curl для OpenSSL и LibreSSL должны отклонять p12, но daniel.haxx.se/blog/ tag/securetransport говорит, что по крайней мере некоторые сборки Apple используют SecureTransport, который, согласно справочной странице, использует p12. Поскольку OpenSSL и LibreSSL требуют PEM, вы можете использовать (любой из них) для преобразования PKCS12 в PEM; по этому поводу уже есть десятки, если не сотни вопросов.   -  person dave_thompson_085    schedule 16.02.2018
comment
Stack Overflow — это сайт для вопросов по программированию и разработке. Этот вопрос кажется не по теме, потому что он не о программировании или разработке. См. раздел О каких темах я могу задать здесь в Справочном центре. Возможно, Суперпользователь или Unix & Linux Stack Exchange лучше спросить.   -  person jww    schedule 16.02.2018
comment
@jww Я не понимаю, почему это не актуальный вопрос? На этом сайте есть десятки подобных вопросов (некоторые даже с той же ошибкой), просто они не совсем то, что я ищу. Любые конкретные проблемы с моим вопросом были бы полезны, поэтому я знаю, что публиковать в будущем.   -  person Margaret S.    schedule 16.02.2018
comment
@ dave_thompson_085 верно, серверу не требуется p12, но я думаю, что есть проблема с файлами формата key / pem на Mac. Спасибо за ресурсы, буду разбираться. Надеюсь, это может помочь!   -  person Margaret S.    schedule 16.02.2018


Ответы (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.

person Kyle Varga    schedule 20.02.2018