Skip to main content

Docker 署名

当社のPKCS11ライブラリと連携して、DockerはDigiCert​​®​​ Software Trust Managerでルートキーと委譲キーを安全に管理することができます。スナップショットキーとタイムスタンプキーは、公証人サーバによってこのアプローチで管理されます。

Prerequisites

Dockerのコンテントトラスト

Dockerコンテントトラストを管理するには、以下のステップに従います。これらのステップは、リポジトリ/コレクションの所有者がリポジトリの初期化中に、一度実行します。リポジトリが初期化され、代表者が追加されると、代表者は引き続き画像タグに署名しなければなりませんが、他のステップは必要ありません。

ヒント

This is a once off action performed by the repository or collection owner

Before you begin:

  1. Configure the following environment variable:

    export DOCKER_CONTENT_TRUST=1
  2. 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:

  1. Sign in to DigiCert ONE.

  2. Navigate Manager menu icon (top right) > Software Trust.

  3. Select Certificates.

  4. Click on the certificate alias.

  5. Identify the Certificate field.

  6. 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は画像を実行する前に検証を行います。