Как использовать команду docker trust key load для загрузки ключа подписи

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

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

Введение

В этом практическом занятии (лабораторной работе) вы научитесь загружать ключ подписи в хранилище ключей Docker Trust с помощью команды docker trust key load. Вы начнете с подготовки файла приватного ключа для подписи образов Docker с использованием openssl.

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/VolumeOperationsGroup(["Volume Operations"]) docker/ImageOperationsGroup -.-> docker/tag("Tag an Image") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/VolumeOperationsGroup -.-> docker/cp("Copy Data Between Host and Container") subgraph Lab Skills docker/tag -.-> lab-555253{{"Как использовать команду docker trust key load для загрузки ключа подписи"}} docker/images -.-> lab-555253{{"Как использовать команду docker trust key load для загрузки ключа подписи"}} docker/cp -.-> lab-555253{{"Как использовать команду docker trust key load для загрузки ключа подписи"}} end

Подготовка файла приватного ключа для подписи

На этом этапе вы научитесь готовить файл приватного ключа для подписи образов Docker. Docker Content Trust использует криптографические ключи для проверки целостности и аутентичности образов. Приватный ключ необходим для подписи образов, а соответствующий публичный ключ используется другими пользователями для проверки подписи.

Сначала перейдите в каталог ~/project, который является вашим рабочим каталогом для этого практического занятия (лабораторной работы).

cd ~/project

Теперь сгенерируйте новый приватный ключ RSA с помощью команды openssl. Эта команда создаст приватный ключ размером 4096 бит и сохранит его в файл с именем my-signing-key.pem в текущем каталоге.

openssl genrsa -out my-signing-key.pem 4096

Вы увидите вывод, указывающий на процесс генерации ключа. Эта команда генерирует приватный ключ в формате PEM.

Далее проверим, что файл my-signing-key.pem был создан в каталоге ~/project.

ls -l my-signing-key.pem

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

Загрузка приватного ключа в хранилище ключей Docker Trust

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

Хранилище ключей Docker Trust находится в каталоге ~/.docker/trust/private. Вам нужно скопировать файл приватного ключа, который вы создали (my-signing-key.pem), в этот каталог.

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

cd ~/project

Теперь скопируйте файл my-signing-key.pem в каталог приватных ключей Docker Trust. Возможно, вам придется создать этот каталог, если он не существует.

mkdir -p ~/.docker/trust/private
cp my-signing-key.pem ~/.docker/trust/private/

Команда mkdir -p создает каталог и все необходимые родительские каталоги, если они еще не существуют. Команда cp копирует файл приватного ключа.

После копирования файла вы можете проверить, что приватный ключ теперь находится в хранилище ключей Docker Trust, выведя список содержимого каталога ~/.docker/trust/private.

ls ~/.docker/trust/private/

В выводе вы должны увидеть my-signing-key.pem. Это подтверждает, что приватный ключ был успешно загружен в хранилище ключей Docker Trust.

Загрузка приватного ключа с определенным именем

На этом этапе вы научитесь загружать приватный ключ в хранилище ключей Docker Trust с определенным именем. Хотя вы можете просто скопировать файл ключа, как это было сделано на предыдущем этапе, использование команды docker trust key load позволяет связать определенное имя с ключом в системе Docker Trust. Это может быть полезно для управления несколькими ключами подписи.

Сначала убедитесь, что вы находитесь в каталоге ~/project, где вы создали файл приватного ключа my-signing-key.pem.

cd ~/project

Теперь используйте команду docker trust key load для загрузки приватного ключа. Вас попросят ввести имя для ключа. Назовем этот ключ my-signer.

docker trust key load my-signing-key.pem --name my-signer

При запросе введите my-signer в качестве имени для ключа.

Loading key from 'my-signing-key.pem'...
Enter name for new key: my-signer

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

Enter passphrase for new key:
Repeat passphrase for new key:

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

Successfully loaded private key from 'my-signing-key.pem' with ID '...'

Для проверки того, что ключ был загружен с указанным именем, вы можете вывести список ключей в вашем хранилище ключей Docker Trust с помощью команды docker trust key list.

docker trust key list

Вы должны увидеть запись с именем (NAME) my-signer и соответствующим идентификатором ключа (KEY ID). Это подтверждает, что вы успешно загрузили приватный ключ с определенным именем.

Резюме

В рамках этого практического занятия (лабораторной работы) вы научились готовить файл приватного ключа для подписи образов Docker с использованием команды openssl genrsa. Затем вы попрактиковались в загрузке сгенерированного приватного ключа в хранилище ключей Docker Trust путем копирования файла ключа в каталог ~/.docker/trust/private.