Я построил libcurl для Windows x64 с OpenSSL. Если я укажу CA-информацию с помощью команды libcurl, как показано ниже, я смогу опубликовать свои данные через https.
curl_easy_setopt(curl_handle, CURLOPT_CAINFO, "C:\\cacert.pem");
Мой вопрос касается варианта 3 под заголовком «Проверка сертификата», найденного здесь: https://curl.haxx.se/docs/sslcerts.html
3) Добавьте сертификат CA для вашего сервера в существующее хранилище сертификатов CA по умолчанию. Хранилище сертификатов CA по умолчанию можно изменить во время компиляции с помощью следующих параметров конфигурации:
—with-ca-bundle = FILE: использовать указанный файл в качестве хранилища сертификатов CA. Сертификаты CA должны быть объединены в формате PEM в этот файл.
—with-ca-path = PATH: использовать указанный путь в качестве хранилища сертификатов CA. Сертификаты CA должны храниться как отдельные файлы PEM в этом каталоге. Возможно, вам понадобится запустить c_rehash после добавления туда файлов.
Эти параметры применяются только к командной строке или libcurl можно настроить во время компиляции, чтобы всегда использовать одну и ту же информацию CA?
Спасибо!
Эти параметры применяются только к командной строке или libcurl можно настроить во время компиляции, чтобы всегда использовать одну и ту же информацию CA?
cURL имеет те же настройки для времени компиляции. Точнее, это опции Autotools.
curl-7.57.0$ ./configure --help
`configure' configures curl - to adapt to many kinds of systems.
Usage: ./configure [OPTION]... [VAR=VALUE]...
...
--with-ca-bundle=FILE Path to a file containing CA certificates (example:
/etc/ca-bundle.crt)
--without-ca-bundle Don't use a default CA bundle
--with-ca-path=DIRECTORY
Path to a directory containing CA certificates
stored individually, with their filenames in a hash
format. This option can be used with OpenSSL, GnuTLS
and PolarSSL backends. Refer to OpenSSL c_rehash for
details. (example: /etc/certificates)
--without-ca-path Don't use a default CA path
--with-ca-fallback Use the built in CA store of the SSL library
--without-ca-fallback Don't use the built in CA store of the SSL library
Я иногда собираю cURL для тестирования на старых системах, таких как CentOS 5. Я считаю, что проще всего загрузить обновленную версию cacert.pem
, а затем использовать --with-ca-bundle
,
Если вы хотите использовать --with-ca-path
тогда это тот, где каждый сертификат хэшируется. Таким образом, у вас будет каталог с 120 или 150 файлами в нем. Файлы будут иметь такие имена, как NNNNNNNN.0
, NNNNNNNN.1
и так далее. NNNNNNNN
будет хеш, а коллизии разрешаются путем увеличения суффикса.
Я держу свой сценарий для создания CURL онлайн на Build-Scripts | build-curl.sh.
Других решений пока нет …