简介
在这个实验中,你将学习如何使用 docker trust key load
命令将签名密钥加载到 Docker 信任密钥库中。你将首先使用 openssl
准备一个用于对 Docker 镜像进行签名的私钥文件。
生成密钥后,你将把这个私钥加载到 Docker 信任密钥库中,该密钥库是存储加密密钥的安全位置。最后,你将探索如何在密钥库中以特定名称加载私钥。
在这个实验中,你将学习如何使用 docker trust key load
命令将签名密钥加载到 Docker 信任密钥库中。你将首先使用 openssl
准备一个用于对 Docker 镜像进行签名的私钥文件。
生成密钥后,你将把这个私钥加载到 Docker 信任密钥库中,该密钥库是存储加密密钥的安全位置。最后,你将探索如何在密钥库中以特定名称加载私钥。
在这一步中,你将学习如何准备一个用于对 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/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 信任密钥库中。