Как использовать команду docker trust key generate для создания ключей подписи

DockerDockerBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии (LabEx) вы научитесь генерировать ключевые пары для подписи с использованием команды gpg, что является фундаментальным этапом для безопасного общения и распространения программного обеспечения. Вы создадите новую ключевую пару RSA и RSA с указанным размером ключа и периодом действия, предоставив важную информацию о идентификаторе пользователя в процессе.

После генерации ключей вы научитесь вводить и подтверждать пароль для нового ключа, что является важной мерой безопасности. Затем вы проверите сгенерированный файл открытого ключа, чтобы убедиться в его правильности. Наконец, вы узнаете, как сгенерировать ключевую пару в определенной директории, демонстрируя гибкость в управлении своими ключами.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/exec("Execute Command in Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") subgraph Lab Skills docker/exec -.-> lab-555252{{"Как использовать команду docker trust key generate для создания ключей подписи"}} docker/create -.-> lab-555252{{"Как использовать команду docker trust key generate для создания ключей подписи"}} end

Генерация новой ключевой пары для подписи

На этом этапе вы научитесь генерировать новую ключевую пару для подписи с использованием команды gpg. Ключевая пара для подписи состоит из закрытого (private key) и открытого (public key) ключей. Закрытый ключ используется для подписи данных, а открытый - для проверки подписи. Это фундаментальное понятие в области безопасного общения и распространения программного обеспечения.

Сначала откройте терминал. Вы уже находитесь в директории ~/project.

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

gpg --full-generate-key

После выполнения команды вас попросят выбрать тип ключа. В этом лабораторном занятии (LabEx) мы будем использовать вариант по умолчанию, который представляет собой RSA and RSA. Нажмите Enter, чтобы принять значение по умолчанию.

gpg (GnuPG) 2.2.27; Copyright (C) 2021 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 1

Далее вас спросят о размере ключа. Больший размер ключа обеспечивает более высокий уровень безопасности, но требует больше времени для генерации и использования. В этом лабораторном занятии мы будем использовать размер ключа по умолчанию, равный 3072 бита. Нажмите Enter, чтобы принять значение по умолчанию.

RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (3072)

Затем вас спросят, как долго ключ должен быть действительным. В этом лабораторном занятии мы сделаем ключ действительным на один год. Введите 1y и нажмите Enter.

Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 1y

Подтвердите, что ключ истекает в указанную дату, введя y и нажав Enter.

Key expires at ...
Is this correct? (y/N) y

Теперь вам нужно предоставить информацию об идентификаторе пользователя (user ID). Эта информация связывается с вашим открытым ключом и помогает другим пользователям вас идентифицировать.

Сначала введите ваше реальное имя. В этом лабораторном занятии вы можете использовать LabEx User. Введите LabEx User и нажмите Enter.

Real name: LabEx User

Далее введите ваш адрес электронной почты. В этом лабораторном занятии вы можете использовать [email protected]. Введите [email protected] и нажмите Enter.

Email address: [email protected]

По желанию вы можете добавить комментарий. В этом лабораторном занятии вы оставите поле комментария пустым. Нажмите Enter, чтобы пропустить комментарий.

Comment:

Проверьте введенную информацию. Если она верна, введите O (Okay) и нажмите Enter. Если вам нужно внести изменения, введите C (Change) или Q (Quit).

You selected this USER-ID:
    "LabEx User <[email protected]>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O

Наконец, вас попросят ввести пароль для защиты вашего закрытого ключа. Это важный этап безопасности. Выберите надежный пароль, который вы сможете запомнить. Вам придется ввести этот пароль еще раз на следующем этапе.

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator more entropy.

Затем система сгенерирует ключевую пару. Это может занять некоторое время.

Ввод и подтверждение пароля для нового ключа

На предыдущем этапе вы начали процесс генерации новой ключевой пары GPG. Последним этапом этого процесса является ввод и подтверждение пароля для вашего закрытого ключа. Этот пароль необходим для защиты вашего закрытого ключа от несанкционированного использования.

Теперь вы должны увидеть диалоговое окно или приглашение в терминале, которое попросит вас ввести пароль.

┌─────────┤ Please enter the passphrase to protect your new key ├─────────┐
│                                                                         │
│ Passphrase: _________________________________________                   │
│                                                                         │
│        <OK>                                          <Cancel>           │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

Введите надежный пароль в поле "Passphrase". Помните этот пароль, так как вам он понадобится каждый раз, когда вы будете использовать ваш закрытый ключ (например, для подписи). В этом лабораторном занятии (LabEx) вы можете использовать простой пароль, такой как mypassphrase123. Введите mypassphrase123 и нажмите Enter или нажмите <OK>.

Затем вас попросят подтвердить пароль, введя его еще раз. Это помогает убедиться, что вы ввели пароль правильно.

┌─────────┤ Please re-enter the passphrase to protect your new key ├─────────┐
│                                                                          │
│ Repeat passphrase: _________________________________________             │
│                                                                          │
│        <OK>                                           <Cancel>            │
│                                                                          │
└──────────────────────────────────────────────────────────────────────────┘

Введите тот же пароль (mypassphrase123) еще раз в поле "Repeat passphrase" и нажмите Enter или нажмите <OK>.

После подтверждения пароля GPG завершит генерацию вашей ключевой пары. Вы должны увидеть вывод, похожий на следующий, который указывает на то, что генерация ключа завершена:

gpg: key ... marked as ultimately trusted
gpg: revocation certificate stored as '/home/labex/.gnupg/openpgp-revocs.d/....rev'
public and secret key created and signed.

pub   rsa3072 2023-10-27 [SC]
      ...
uid           [ultimate] LabEx User <[email protected]>
sub   rsa3072 2023-10-27 [E]

Вывод показывает информацию о вашем недавно сгенерированном ключе, включая тип ключа (rsa3072), дату создания, идентификатор ключа (...) и идентификатор пользователя, который вы указали (LabEx User <[email protected]>). Строка pub относится к открытому ключу, а строка sub - к подключу (используется для шифрования).

Теперь вы успешно сгенерировали ключевую пару GPG и защитили свой закрытый ключ паролем.

Проверка сгенерированного файла открытого ключа

На предыдущих этапах вы успешно сгенерировали ключевую пару GPG. Теперь давайте проверим, что открытый ключ был сгенерирован правильно и доступен. Открытый ключ (public key) - это то, что вы будете передавать другим пользователям, чтобы они могли проверять ваши подписи или шифровать для вас сообщения.

Чтобы вывести список открытых ключей в вашем ключевом наборе (keyring), используйте команду gpg --list-keys. Поскольку вы указали "LabEx User" в качестве имени при генерации ключа, вы можете отфильтровать вывод, чтобы показать только ваш ключ.

gpg --list-keys "LabEx User"

Вы должны увидеть вывод, похожий на следующий, подтверждающий наличие вашего открытого ключа:

pub   rsa3072 2023-10-27 [SC]
      ...
uid           [ultimate] LabEx User <[email protected]>
sub   rsa3072 2023-10-27 [E]

Этот вывод показывает детали вашего открытого ключа, включая тип ключа (pub), алгоритм (rsa3072), дату создания (2023-10-27), возможности ([SC] для подписи и сертификации), идентификатор ключа (...), идентификатор пользователя (LabEx User <[email protected]>) и информацию о подключу для шифрования (sub).

Чтобы экспортировать ваш открытый ключ в файл, вы можете использовать команду gpg --output <filename> --armor --export <user ID>. Опция --armor выводит ключ в ASCII-арморированном формате, который представляет собой текстовый формат, удобный для чтения человеком. Давайте экспортируем открытый ключ для "LabEx User" в файл с именем labex_user_public.key в текущей директории (~/project).

gpg --output labex_user_public.key --armor --export "LabEx User"

Эта команда создаст файл с именем labex_user_public.key в директории ~/project, содержащий ваш открытый ключ.

Вы можете просмотреть содержимое этого файла, используя команду cat:

cat labex_user_public.key

Вывод будет показывать ASCII-арморированный блок открытого ключа, начинающийся с -----BEGIN PGP PUBLIC KEY BLOCK----- и заканчивающийся -----END PGP PUBLIC KEY BLOCK-----.

-----BEGIN PGP PUBLIC KEY BLOCK-----

... (your public key content) ...

-----END PGP PUBLIC KEY BLOCK-----

Это подтверждает, что ваш открытый ключ был успешно экспортирован в файл. Теперь вы можете передать этот файл тем, кто нуждается в проверке ваших подписей или шифровании данных для вас.

Генерация ключевой пары в указанной директории

На предыдущих этапах вы сгенерировали ключевую пару GPG, которая была сохранена в стандартной домашней директории GPG (~/.gnupg). Иногда вам может понадобиться сгенерировать ключи и сохранить их в другом месте, например, для конкретных проектов или чтобы отделить их от основного ключевого наборе (keyring).

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

Сначала создадим новую директорию, где мы будем хранить новую ключевую пару. Мы создадим директорию с именем mykeys внутри директории ~/project.

mkdir ~/project/mykeys

Теперь, чтобы сгенерировать ключевую пару и сохранить ее в директории ~/project/mykeys, вам нужно использовать опцию --homedir с командой gpg. Эта опция сообщает GPG использовать указанную директорию в качестве своей домашней директории вместо стандартной.

Используйте следующую команду, чтобы начать процесс генерации ключа, указав директорию ~/project/mykeys:

gpg --homedir ~/project/mykeys --full-generate-key

Вы будете пройдены по тому же процессу генерации ключа, как на этапе 1 и этапе 2.

  1. Выберите тип ключа: Выберите вариант по умолчанию RSA and RSA, нажав Enter.
  2. Какой размер ключа вы хотите? Выберите размер по умолчанию 3072, нажав Enter.
  3. На какой срок действителен ключ? Введите 1y для одного года и нажмите Enter.
  4. Верно ли это? Введите y и нажмите Enter.
  5. Реальное имя: Введите Project User и нажмите Enter.
  6. Адрес электронной почты: Введите [email protected] и нажмите Enter.
  7. Комментарий: Оставьте поле пустым, нажав Enter.
  8. Изменить (N)ame, (C)omment, (E)mail или (O)kay/(Q)uit? Введите O и нажмите Enter.
  9. Введите пароль: Введите пароль (например, projectpassphrase456) и нажмите Enter.
  10. Повторите пароль: Введите тот же пароль (projectpassphrase456) еще раз и нажмите Enter.

После завершения этих шагов GPG сгенерирует ключевую пару и сохранит необходимые файлы в директории ~/project/mykeys.

Вы можете проверить, что ключ был сгенерирован в указанной директории, выведя список ключей в этой домашней директории:

gpg --homedir ~/project/mykeys --list-keys "Project User"

Вы должны увидеть вывод, похожий на следующий, показывающий только что сгенерированный ключ:

gpg: directory '/home/labex/project/mykeys' created
gpg: keybox '/home/labex/project/mykeys/pubring.kbx' created
pub   rsa3072 2023-10-27 [SC]
      ...
uid           [ultimate] Project User <[email protected]>
sub   rsa3072 2023-10-27 [E]

Обратите внимание на строки, указывающие, что директория GPG и ключ-образец (keybox) были созданы в ~/project/mykeys. Это подтверждает, что ключ был сгенерирован в указанном месте.

Резюме

В этом практическом занятии (lab) вы узнали, как сгенерировать новую ключевую пару для подписи с использованием команды gpg. Этот процесс включает в себя выбор типа ключа (по умолчанию - RSA и RSA), указание размера ключа (по умолчанию - 3072 бита) и установку периода действия ключа (в этом практическом занятии установлен на один год). Вы также узнали, как ввести и подтвердить пароль для нового ключа, чтобы защитить закрытый ключ (private key). Наконец, вы проверили сгенерированный файл открытого ключа (public key) и изучили процесс генерации ключевой пары в указанной директории, поняв основные концепции закрытых и открытых ключей для безопасного общения и распространения программного обеспечения.