Разница между --cacert и -capath в curl? - программирование
Подтвердить что ты не робот

Разница между --cacert и -capath в curl?

Когда будет использоваться опция --cacert по сравнению с опцией --capath в curl (CLI, которая есть).

--cacert, похоже, ссылается на монолитный файл, содержащий несколько PEM. Предположим, что он просматривает, чтобы найти подходящее имя хоста?

--capath, похоже, ссылается на каталог, в котором проживает несколько файлов. Завершает ли завиток соответствующий сертификат в качестве имени файла в нем?

4b9b3361

Ответ 1

Из docs:

- cacert (HTTPS) Сообщает curl использовать указанный файл сертификата для проверки партнера. Файл может содержать несколько сертификатов CA. сертификат должен быть в формате PEM. Если этот параметр используется несколько раз, последний будет использоваться.

- capath (HTTPS) Говорит завиток, чтобы использовать указанный каталог сертификатов для проверки партнера. Сертификаты должны быть в формате PEM, а каталог должен быть обработан с использованием утилиты c_rehash с openssl. Каталоги сертификатов не поддерживаются в Windows (потому что c_rehash использует символические ссылки для их создания). Использование --capath может позволить curl делать https-соединения намного эффективнее, чем используя -cacert, если файл -cacert содержит много сертификатов CA. Если эта опция используется несколько раз, последняя будет использоваться.

Итак, если вы укажете --cacert, сертификаты CA будут сохранены в указанном файле. Эти сертификаты CA используются для проверки сертификатов удаленных серверов, к которым подключается cURL.

Опция -capath используется для указания каталога, содержащего сертификаты CA, а не одного файла. Утилиту c_rehash следует использовать для подготовки каталога, т.е. Создания необходимых ссылок. Главное преимущество использования --capath, по-видимому, будет более эффективным, чем -cacert, если у вас есть много сертификатов CA.

Здесь script, который, вероятно, делает то, что делает c_rehash:

for file in *.pem; do ln -s $file `openssl x509 -hash -noout -in $file`.0; done

В обоих вариантах вы должны быть осторожны, чтобы включать только сертификаты CA из CA, которым вы доверяете. Если, например, вы знаете, что удаленные серверы всегда должны быть выданы с помощью сертификатов от YourCompanyCA, то это единственный сертификат CA, который вы должны включить.