Когда я пытаюсь использовать Curl в Windows, чтобы получить https
URL-адрес, я получаю страшную «ошибку соединения (60)».
Точное сообщение об ошибке:
curl: (60) Проблема с сертификатом SSL, убедитесь, что сертификат CA в порядке. Подробности:
ошибка: 14090086: подпрограммы SSL: SSL3_GET_SERVER_CERTIFICATE: сбой проверки сертификата.
Подробнее здесь: http://curl.haxx.se/docs/sslcerts.html
Как решить это?
Ответы:
Я не знаю почему, но я не нашел эту информацию в одном месте.
Загрузите версию Curl с поддержкой SSL или создайте версию с поддержкой SSL самостоятельно.
Из http://curl.haxx.se/docs/caextract.html , Скачать файл cacert.pem.
Поместите curl.exe и файл .pem в один каталог.
Переименуйте
cacert.pem
файл вcurl-ca-bundle.crt
Перезапустите curl.exe!
РЕДАКТИРОВАТЬ:
Есть и другие способы решения проблемы. этот конкретный способ опирается на cacert, созданный создателем Curl. Это может быть не то, что вам нужно, и, в частности, это может не сработать в тех случаях, когда у вас есть менее известный центр сертификации (например, центр, известный только вашей корпорации) для сертификата, используемого сайтом SSL , В этом случае вы захотите создать свой собственный
curl-ca-bundle.crt
файл. Вы можете использовать certreq.exe и openssl.exe для экспорта такого сертификата из хранилища IE / Windows, а затем преобразовать в формат pem, соответственно.источник
curl
отмеченныйWinSSL
в Windows 7. Согласно ссылке на документацию, отмеченные версии должны работать только с использованием системных сертификатов. Однако я получал ошибку, пока не последовал вашему решению.set CURL_CA_BUNDLE=<path to crt>
. Убедитесь, что формат файла правильный. Этот метод будет работать, даже если у вас есть несколькоcurl
установок, например, git, vagrant ...Я создал сценарий PowerShell, который способен записывать
ca-cert.crt
файл на основе сертификатов CA, установленных в вашем хранилище сертификатов Windows (CurrentUser или LocalMachine). Запустите скрипт так:Это создаст
curl-ca-cert.crt
файл, который должен храниться в том же каталоге, чтоcurl.exe
и вы сможете проверять те же сайты, что и в своих приложениях Windows (обратите внимание, что этот файл также может использоватьсяgit
).«Официальный» скрипт можно найти на GitHub , но его начальная версия приведена здесь для справки:
источник
На самом деле у нас была та же проблема с Typheous / Ruby. Решение загружало файл cacert.pem и сохранял его в C: \ Windows \ System32 (или там, где у вас Windows). После этого мы устанавливаем глобальную переменную среды, подобную описанной здесь, где должно быть «Имя переменной»
CURL_CA_BUNDLE
и «Значение переменной» путь к файлу%SystemRoot%\System32\cacert.pem
.При запуске нового сеанса CMD вы теперь можете просто использовать функцию Typheous / Libcurl для аутентификации соединений SSL. Я успешно попробовал это с Windows 8.1.
источник