Как неинтерактивно добавить 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скорее всего делает, а потом просто делает это сам (через скрипт). На самом деле это было не так уж и много.

  1. Скопируйте сертификаты .crt в

  2. Симлинкните эти сертификаты, которые вы добавили в /usr/share/ca-certificates/your.domain.tldв /etc/ssl/certificates/

  3. Убедиться /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
      
  4. Бежать 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"

Надеюсь, это поможет кому-то.

Другие вопросы по тегам