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

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

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

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

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

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

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

    gpg --full-generate-key
    

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

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

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

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

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

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

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

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

    gpg --armor --export <your_email> > public_key.asc \
    gpg --armor --export-secret-keys <your_email> > private_key.asc
    
  4. Скопируйте файл public_key.asc на установочный узел.

  5. В секцию [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'
    
  6. Создайте файл /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
    
  7. Сделайте файл исполняемым:

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

    sudo -iu pulp gpg --import /tmp/private_key.asc
    
  9. На установочном узле платформы в каталоге /opt/rbta/aa/astra-automation-setup/ выполните команду:

    sudo ./aa-setup