Местоположение CA Cert Bundle по умолчанию


18

Мне нужно добавить файл сертификата .pem в мой набор сертификатов CA по умолчанию, но я не знаю, где хранится набор сертификатов CA по умолчанию.

Мне нужно добавить мой новый файл .pem в этот пакет по умолчанию. Я предпочел бы сделать это, чем указать свое собственное местоположение с помощью --capath

cURL четко знает, где искать, но я не вижу никаких команд cURL, которые показывают местоположение. Есть ли команда, которая покажет это местоположение? Как я могу найти это?

Согласно cURL:
добавьте сертификат CA для вашего сервера в существующий пакет сертификатов CA по умолчанию. Путь по умолчанию к используемому комплекту CA можно изменить, запустив configure с параметром --with-ca-bundle, указывающим выбранный вами путь.

Благодарность


Какую операционную систему ты используешь?
Кристиан Чиупиту

Ответы:


20

Запуск curlс straceможет дать вам подсказку.

strace curl https://www.google.com | & grep open

Много выходных, но ближе к концу я вижу:

open ("/ etc / ssl / certs / 578d5c04.0", O_RDONLY) = 4

где хранятся мои сертификаты.


2
+1 за показ мне о strace!
Роберт Дандон

straceне доступно на macOS, по-видимому. «Эквивалент» dtrussсказал мне «dtrace: не удалось инициализировать dtrace: DTrace требует дополнительных привилегий». Так что я использовал sudoс этим. На что он ответил: «dtrace: не удалось выполнить curl: dtrace не может управлять исполняемыми файлами, подписанными с ограниченными правами». Не очень полезно.
LS

17

Должна быть программа 'curl-config' в curl 'bin /', т.е. где находится двоичный файл 'curl'.

./curl-config --ca

дает путь установки пакета.

Я только что сделал whatis curl-config: «Получить информацию об установке libcurl», поэтому я думаю, что она будет доступна только в том случае, если была установлена ​​libcurl, хотя я предполагаю, что она стандартная.


1
Мне нужно было установить пакет в Ubuntu, чтобы запустить его (вам будет показан список доступных опций, если он не установлен), но использование этой команды привело меня в нужное место!
Роберт Дандон

2
curl-configПрограмма не доступна во всех версиях программы или установки. Например, некоторые администраторы могут не понимать цели программы и не устанавливать ее, потому что они думают, что это всего лишь инструмент конфигурации сборки. Кроме того, если пользователь, которому нужна программа, не является администратором системы, он не может установить ее. У меня есть доступ к двум системам, одна не имеет этой программы, а другая не выводит для curl-config --ca.
LS

Я предпочитаю этот ответ принятому - использовать straceдля поиска информации о конфигурации не нужно.
Кен Уильямс

7

Я нашел простой способ: использовать --cacertс неправильным именем файла, вывод будет отображать путь.

Пример:

~$ curl --cacert non_existing_file https://www.google.com
curl: (77) error setting certificate verify locations:
  CAfile: non_existing_file
  CApath: /etc/ssl/certs

Я думал, что это выглядит как хорошее решение. Однако, curl дал мне ошибку «77», но не дополнительную информацию.
LS

@LS попробуйте добавить подробный флаг: -v или --verbose
Chananel P

2

Linux (Ubuntu, Debian)

Скопируйте ваш CA в каталог / usr / local / share / ca-Certificates /

sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt

Обновите хранилище CA

sudo update-ca-certificates

Удалите свой CA и обновите хранилище CA:

sudo update-ca-certificates --fresh

Linux (CentOs 6)

Установите пакет ca-Certificates:

yum install ca-certificates

Включите функцию динамического конфигурирования CA: update-ca-trust force-enable Добавьте его в качестве нового файла для /etc/pki/ca-trust/source/anchors/:

cp foo.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust extract

Linux (CentOs 5)

Добавить доверенный сертификат в файл /etc/pki/tls/certs/ca-bundle.crt

cat foo.crt >>/etc/pki/tls/certs/ca-bundle.crt

https://manuals.gfi.com/en/kerio/connect/content/server-configuration/ssl-certificates/adding-trusted-root-certificates-to-the-server-1605.html очень хорошая ссылка, которая объясняет, как добавить его в несколько популярных ОС.


Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки.
Джеральд Шнайдер

@GeraldSchneider> Вы комментируете, читаете, и действовали;)
BiG_NoBoDy

1

Вы можете скачать пакет CA Root Certificates от haxx.se, которые являются создателями curl. затем просто добавьте свой сертификат в их .pem и обратитесь к нему при использовании curl с параметром --cacert


1

-v с https в URL.

$ curl -v https://google.com
* Rebuilt URL to: https://google.com/
* timeout on name lookup is not supported
*   Trying 172.217.9.174...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Connected to google.com (172.217.9.174) port 443 (#0)
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   *CAfile: C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt*

Нет. Это не показывало ничего подобного для меня. Фактически, я сравнил результат этого с другим прогоном, добавив -kопцию, чтобы увидеть, есть ли разница. Там не было никакой разницы.
LS

@LS у вас есть https в вашем URL?
Филипп Рего

0

Расположение пакета CA по умолчанию зависит от ОС. На RHEL5 он находится в /etc/pki/tls/certs/ca-bundle.pem. В других версиях ОС Linux или не Linux они могут находиться в другом месте.


Так что я думаю, что я просто ищу этот файл тогда ...
Слинки

2
Другая идея: # strings /usr/lib64/libcurl.so.3 | egrep '^ /' /etc/pki/tls/certs/ca-bundle.crt
offby1
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.