如何使用 docker trust key load 命令加载签名密钥

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何使用 docker trust key load 命令将签名密钥加载到 Docker 信任密钥库中。你将首先使用 openssl 准备一个用于对 Docker 镜像进行签名的私钥文件。

生成密钥后,你将把这个私钥加载到 Docker 信任密钥库中,该密钥库是存储加密密钥的安全位置。最后,你将探索如何在密钥库中以特定名称加载私钥。


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 内容信任 (Docker Content Trust) 使用加密密钥来验证镜像的完整性和真实性。私钥对于镜像签名至关重要,而相应的公钥则供他人用于验证签名。

首先,导航到 ~/project 目录,这是你本次实验的工作目录。

cd ~/project

现在,使用 openssl 命令生成一个新的 RSA 私钥。此命令将创建一个 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 信任密钥库中

在这一步中,你将把上一步生成的私钥加载到 Docker 信任密钥库中。Docker 信任密钥库是 Docker 存储用于签名和验证镜像的加密密钥的安全位置。

Docker 信任密钥库位于 ~/.docker/trust/private 目录中。你需要将创建的私钥文件 (my-signing-key.pem) 复制到这个目录中。

首先,确保你位于创建私钥的 ~/project 目录中。

cd ~/project

现在,将 my-signing-key.pem 文件复制到 Docker 信任私钥目录。如果该目录不存在,你可能需要创建它。

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

mkdir -p 命令会创建目录以及任何必要的父目录(如果它们尚不存在)。cp 命令用于复制私钥文件。

复制文件后,你可以通过列出 ~/.docker/trust/private 目录的内容来验证私钥是否已存在于 Docker 信任密钥库中。

ls ~/.docker/trust/private/

你应该会在输出中看到 my-signing-key.pem。这确认了私钥已成功加载到 Docker 信任密钥库中。

使用特定名称加载私钥

在这一步中,你将学习如何使用特定名称将私钥加载到 Docker 信任密钥库中。虽然你可以像上一步那样简单地复制密钥文件,但使用 docker trust key load 命令可以让你在 Docker 信任系统中为密钥关联一个特定的名称。这有助于管理多个签名密钥。

首先,确保你位于创建私钥文件 my-signing-key.pem~/project 目录中。

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 passphrase for new key:
Repeat passphrase for new key:

你应该会看到表明密钥已成功加载的输出。

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

要验证密钥是否已使用指定名称加载,你可以使用 docker trust key list 命令列出 Docker 信任密钥库中的密钥。

docker trust key list

你应该会看到一个名称为 my-signer 且带有相应密钥 ID 的条目。这确认了你已成功使用特定名称加载了私钥。

总结

在本次实验中,你学习了如何使用 openssl genrsa 准备用于签署 Docker 镜像的私钥文件。然后,你通过将生成的私钥文件复制到 ~/.docker/trust/private 目录,练习了将该私钥加载到 Docker 信任密钥库中。