Создание ключа подписи контента

Создание ключа подписи контента#

Ключи подписи обеспечивают проверку подлинности и целостности контента, который загружается в Private Automation Hub и используется для выполнения автоматизации. Приватный ключ применяется для подписания коллекций, а соответствующий публичный ключ – для проверки подписи системой Private Automation Hub и другими узлами.

Предупреждение

Приватный ключ должен храниться только на сервере, выполняющем подпись. Его компрометация позволит злоумышленникам выпускать доверенные (подписанные) пакеты. Никогда не передавайте приватный ключ третьим лицам.

Для создания ключа выполните следующие действия:

  1. На любой машине создайте пару ключей GPG с помощью команды:

    gpg --full-generate-key
    

    В результате выполнения команды запускается мастер создания ключа, который задает несколько интерактивных вопросов.

    При ответе на вопросы придерживайтесь следующих рекомендаций:

    • тип ключа – RSA and RSA;

    • длина – 4096 бит;

    • срок действия – ограниченный, например, 2 года;

    • используйте пароль для дополнительной защиты.

    Примечание

    Подробное описание процесса создания ключей GPG см. в инструкции.

  2. После генерации ключа убедитесь, что он появился в локальном хранилище с помощью команды:

    gpg --list-keys
    

    Команда выводит в терминал список ключей и их отпечатков (fingerprints), например:

    sec   rsa4096 2025-02-06 [SC]
          A90B44D4C5967DDF9280A737A92BB253E671651D
    uid         [ultimate] John Dow (John Dow Personal GPG key) <johndow@example.com>
    ssb   rsa4096 2025-02-06 [E]
    

    Здесь A90B44D4C5967DDF9280A737A92BB253E671651D – отпечаток ключа.

  3. Экспортируйте публичный и приватный ключи:

    gpg --export --armor <fingerprint> > public_key.asc \
    gpg --export-secret-keys --armor <fingerprint> > private_key.asc
    

    Здесь <fingerprint> – отпечаток ключа.

  4. Подключитесь к установочному узлу.

  5. Скопируйте файл public_key.asc на установочный узел.

  6. В секцию [all:vars] файла inventory добавьте следующие параметры:

    automationhub_create_default_collection_signing_service='true'
    automationhub_auto_sign_collections='true'
    automationhub_require_content_approval='true'
    automationhub_collection_signing_service_key='/home/<user>/public_key.asc'
    automationhub_collection_signing_service_script='/home/<user>/collection_signing.sh'
    
  7. Создайте файл /home/<user>/collection_signing.sh со следующим содержимым:

    #!/usr/bin/env bash
    
    FILE_PATH=$1
    SIGNATURE_PATH="$1.asc"
    
    ADMIN_ID="$PULP_SIGNING_KEY_FINGERPRINT"
    PASSWORD="<your_gpg_password>"
    
    GPG_OUTPUT=$(gpg --quiet --batch --pinentry-mode loopback --yes --passphrase \
       "$PASSWORD" --homedir ~/.gnupg/ --detach-sign --default-key "$ADMIN_ID" \
       --armor --output "$SIGNATURE_PATH" "$FILE_PATH" 2>&1)
    STATUS=$?
    
    if [ $STATUS -eq 0 ]; then
       echo "{\"file\": \"$FILE_PATH\", \"signature\": \"$SIGNATURE_PATH\"}"
    else
       echo "GPG signing failed: $GPG_OUTPUT" >&2
       exit $STATUS
    fi
    

    Здесь <your_gpg_password> – пароль, заданный при создании ключа GPG.

  8. Сделайте файл исполняемым:

    chmod +x /home/<user>/collection_signing.sh
    
  9. Скопируйте файл private_key.asc на узел Private Automation Hub и выполните следующие команды, чтобы импортировать его в хранилище ключей GPG, используемое Private Automation Hub:

    sudo install -o pulp -g pulp -m 600 </path/to/private_key.asc> /tmp/private_key.asc \
    sudo -iu pulp gpg --import /tmp/private_key.asc
    

    Здесь </path/to/private_key.asc> – путь к скопированному на узел Private Automation Hub файлу.

  10. На установочном узле платформы в каталоге /opt/rbta/aa/astra-automation-setup/ выполните команду:

    sudo ./aa-setup