Docker 署名
当社のPKCS11ライブラリと連携して、DockerはDigiCert® Software Trust Managerでルートキーと委譲キーを安全に管理することができます。スナップショットキーとタイムスタンプキーは、公証人サーバによってこのアプローチで管理されます。
Prerequisites
Linux operating system
Docker (version 20.10.7)
Generate a production ECDSA 256 keypair with a default certificate
Dockerのコンテントトラスト
Dockerコンテントトラストを管理するには、以下のステップに従います。これらのステップは、リポジトリ/コレクションの所有者がリポジトリの初期化中に、一度実行します。リポジトリが初期化され、代表者が追加されると、代表者は引き続き画像タグに署名しなければなりませんが、他のステップは必要ありません。
ヒント
This is a once off action performed by the repository or collection owner
Before you begin:
Configure the following environment variable:
export DOCKER_CONTENT_TRUST=1
Copy the Software Trust Manager PKCS11 library to this location:
copy smpkcs11.so /usr/local/lib/libykcs11.so
ルートキーを生成する
まだ存在していない場合は、"CN=root "を含む新しい鍵ペアを生成してください。
A root key is only required when adding new repositories or collections. Docker identifies a root key when it contains a certificate with CN=root
. This action should only be performed by the repository or collection owner.
If one does not already exist, generate a new keypair that contains “CN=root”, using:
keytool -keystore NONE -storetype PKCS11 -storepass changeit -providerClass sun.security.pkcs11.SunPKCS11 -providerArg <path_of_configuration_file> -genkeypair -keyalg EC -keysize 256 -dname “CN=root” -alias docker_root_key
注記
Docker 署名は ECDSA 256 ビット鍵のみをサポートしています。
Dockerの委任キーをセットアップする
Dockerが画像に署名するための委任キーと証明書を生成します。これは、STMのDigiCert OneポータルまたはSTM CLIを使用して行うことができます。
A delegation key with a default certificate is required for Docker to sign images. You can generate a key and default certificate in Signing Manager Controller (SMCTL) or in Software Trust Manager.
To generate the delegation key and default certificate in SMCTL:
smctl keypair generate ecdsa <Delegation Key Alias> --cert-alias=<Delegation Cert Alias> --cert-profile-id=<Certificate Profile ID> --generate-cert=true --key-type=PRODUCTION
Docker リポジトリを初期化する
Follow theses steps to create a Docker repository and add a delegation role.
Download the certificate generated for the Docker delegation key:
Sign in to DigiCert ONE.
Navigate Manager menu icon (top right) > Software Trust.
Select Certificates.
Click on the certificate alias.
Identify the Certificate field.
Click the Download icon or copy and paste the plain text.
To add the certificate as a delegation on Docker, use the command:
docker trust signer add --key <keypair_delegation_certificate.cer> "digicert" digicert/hello-digicert
"DigiCert"は、委任の名前です。"digicert/hello-digicert "は、新しいリポジトリまたはコレクションです。
注記
委任/署名者を追加または削除するには、リポジトリキーが必要です。
リポジトリに対する署名者/委任者の役割を確認する
To verify the signer and delegation roles associated with the repository.
docker trust inspect --pretty digicert/hello-digicert
画像をプッシュし、レジストリと公証人にデータを信頼させる
このコマンドは、委任キーを使ってタグに署名し、トラストデータを公証人にプッシュします。
To sign the tag using the delegation key and push the trust data to notary:
docker push digicert/hello-digicert
他のコンピュータから Dockerの画像を引き出します。コンテントトラストが有効な場合、Dockerは画像を実行する前に検証を行います。