Как неинтерактивно добавить ssl-сертификаты центра сертификации (CA) из скрипта
У меня есть игра, которая вызывает скрипт. Сценарий копирует файлы .crt для моей инфраструктуры закрытых ключей в /usr/share/ca-certificates/my.domain.tld.
Затем скрипт вызывает:
sudo update-ca-certificates
sudo dpkg-reconfigure ca-certificates
Вызов dpkg-reconfigure вызывает появление интерфейса curses с просьбой конкретно выбрать и включить сертификаты, которые я хочу включить. Мне нужно найти способ, чтобы это работало не в интерактивном режиме. Должны быть решения, но я некоторое время искал и пока ничего не нашел.
Помощь была бы фантастической/замечательной/потрясающей, пожалуйста!
3 ответа
Я нашел много интересных вещей, связанных с изменением базы данных debconf, чтобы предварительно задать вопросы в пользовательском интерфейсе, но на самом деле это ничего не изменило для меня.
В конечном счете, что заставило меня работать, так это выяснить, что
dpkg-reconfigureскорее всего делает, а потом просто делает это сам (через скрипт). На самом деле это было не так уж и много.
Скопируйте сертификаты .crt в
Симлинкните эти сертификаты, которые вы добавили в
/usr/share/ca-certificates/your.domain.tldв/etc/ssl/certificates/Убедиться
/etc/ca-certificates.confсодержат строку для ваших сертификатов, например:your.domain.tld/issuing_ca.crt your.domain.tld/root_ca.crtОбратите внимание, что эти строки НЕ начинаются с , чтобы отменить выбор этих сертификатов. Для этого шага я использовал:
sed -i ...чтобы убедиться, что в этих линиях нет ведущих!bash, чтобы проверить, существуют ли эти строки, например:
if [ ! grep -q "your.domain.tld/issuing_ca.crt" /etc/ca-certificates.conf ] ; thenесли строк не существовало, я добавлял их с помощью:
cat [filename] >> /etc/ca-certificates.conf
Бежать
sudo update-ca-certificates.(Это объединяет все сертификаты в
/etc/ssl/certsсделать синглca-certificates.crtкоторые используют приложения.)
Основываясь на прошлых вопросах, вы сможете скопировать их в /usr/local/share/ca-certificates/(NewFolder), а затем
sudo update-ca-certificatesчтобы сделать их пригодными для использования в ваших приложениях
Создание папки в /usr/local/share/ca-certificates и копирование моего сертификата ca в нее сработало для меня (спасибо, Рой Абернати). Вот соответствующая часть моей пьесы:
- name: Create directory mycert in /usr/local/share/ca-certificates/
file:
path: //usr/local/share/ca-certificates/mycert
state: directory
- name: Copy certificate to /usr/local/share/ca-certificates/mycert
copy:
src: certificate.cer
dest: /usr/local/share/ca-certificates/dcpud/certificate.crt
owner: root
group: root
mode: 0644
- name: Update CA certificate trust
shell: /bin/bash -c "update-ca-certificates"
Надеюсь, это поможет кому-то.