第3章 Red Hat Quay の高度なデプロイメント
以下のセクションを使用して、高度な Red Hat Quay を設定します。
3.1. SSL/TLS の使用
自己署名証明書 で Red Hat Quay を設定するには、認証局 (CA) を作成して、必要なキーおよび証明書ファイルを生成する必要があります。
以下の例では、/etc/hosts ファイルにエントリーを追加するなど、DNS または別の命名メカニズムを使用してサーバーホスト名 quay-server.example.com を設定していることを前提としています。
$ cat /etc/hosts ... 192.168.1.112 quay-server.example.com
3.1.1. 認証局の作成と証明書への署名
次の手順を使用して、ssl.cert および ssl.key という名前の証明書ファイルとプライマリーキーファイルを作成します。
3.1.1.1. 認証局の作成
認証局 (CA) を作成するには、次の手順を使用します。
手順
次のコマンドを入力して、ルート CA キーを生成します。
$ openssl genrsa -out rootCA.key 2048
次のコマンドを入力して、ルート CA 証明書を生成します。
$ openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem
サーバーのホスト名など、証明書の要求に組み込まれる情報を入力します。以下に例を示します。
Country Name (2 letter code) [XX]:IE State or Province Name (full name) []:GALWAY Locality Name (eg, city) [Default City]:GALWAY Organization Name (eg, company) [Default Company Ltd]:QUAY Organizational Unit Name (eg, section) []:DOCS Common Name (eg, your name or your server's hostname) []:quay-server.example.com
3.1.1.2. 証明書への署名
証明書に署名するには、次の手順を使用します。
手順
次のコマンドを入力してサーバーキーを生成します。
$ openssl genrsa -out ssl.key 2048
次のコマンドを入力して、署名リクエストを生成します。
$ openssl req -new -key ssl.key -out ssl.csr
サーバーのホスト名など、証明書の要求に組み込まれる情報を入力します。以下に例を示します。
Country Name (2 letter code) [XX]:IE State or Province Name (full name) []:GALWAY Locality Name (eg, city) [Default City]:GALWAY Organization Name (eg, company) [Default Company Ltd]:QUAY Organizational Unit Name (eg, section) []:DOCS Common Name (eg, your name or your server's hostname) []:quay-server.example.com
以下のようにサーバーのホスト名を指定して、設定ファイルの
openssl.cnfを作成します。openssl.cnf
[req] req_extensions = v3_req distinguished_name = req_distinguished_name [req_distinguished_name] [ v3_req ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = quay-server.example.com IP.1 = 192.168.1.112
設定ファイルを使用して、証明書
ssl.certを生成します。$ openssl x509 -req -in ssl.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out ssl.cert -days 356 -extensions v3_req -extfile openssl.cnf
3.1.2. Red Hat Quay UI を使用した SSL/TLS の設定
Red Hat Quay UI を使用して SSL/TLS を設定するには、次の手順を実行します。
コマンドラインインターフェイスを使用して SSL を設定するには、コマンドラインインターフェイスを使用した SSL/TLS の設定を参照してください。
前提条件
- 認証局を作成して証明書に署名している。
手順
Quayコンテナーを設定モードで起動します。$ sudo podman run --rm -it --name quay_config -p 80:8080 -p 443:8443 registry.redhat.io/quay/quay-rhel8:v3.9.0 config secret
- Server Configuration セクションで、Red Hat Quay handles TLS を選択します。前に作成した証明書ファイルと秘密鍵ファイルをアップロードし、Server Hostname 証明書の作成時に使用された値と一致することを確認します。
- 更新された設定を検証およびダウンロードします。
次のコマンドを入力して、
Quayコンテナーを停止し、レジストリーを再起動します。$ sudo podman rm -f quay $ sudo podman run -d --rm -p 80:8080 -p 443:8443 \ --name=quay \ -v $QUAY/config:/conf/stack:Z \ -v $QUAY/storage:/datastorage:Z \ registry.redhat.io/quay/quay-rhel8:v3.9.0
3.1.3. コマンドラインインターフェイスを使用した SSL の設定
コマンドラインインターフェイスを使用して SSL/TLS を設定するには、次の手順を実行します。
前提条件
- 認証局を作成して証明書に署名している。
手順
証明書ファイルとプライマリーキーファイルを設定ディレクトリーにコピーして、それぞれ
ssl.certとssl.keyという名前が付けられていることを確認します。cp ~/ssl.cert ~/ssl.key $QUAY/config
次のコマンドを入力して、
$QUAY/configディレクトリーに移動します。$ cd $QUAY/config
config.yamlファイルを編集し、Red Hat Quay が TLS/SSL を処理するように指定します。config.yaml
... SERVER_HOSTNAME: quay-server.example.com ... PREFERRED_URL_SCHEME: https ...
オプション: 次のコマンドを入力して、rootCA.pem ファイルの内容を ssl.cert ファイルの末尾に追加します。
$ cat rootCA.pem >> ssl.cert
次のコマンドを入力して、
Quayコンテナーを停止します。$ sudo podman stop quay
次のコマンドを入力してレジストリーを再起動します。
$ sudo podman run -d --rm -p 80:8080 -p 443:8443 \ --name=quay \ -v $QUAY/config:/conf/stack:Z \ -v $QUAY/storage:/datastorage:Z \ registry.redhat.io/quay/quay-rhel8:v3.9.0
3.1.4. コマンドラインを使用した SSL 設定のテスト
Podman loginコマンドを使用して、SSL が有効になっている Quay レジストリーへのログインを試みます。$ sudo podman login quay-server.example.com Username: quayadmin Password: Error: error authenticating creds for "quay-server.example.com": error pinging docker registry quay-server.example.com: Get "https://quay-server.example.com/v2/": x509: certificate signed by unknown authority
Podman は自己署名証明書を信頼しません。回避策として、
--tls-verifyオプションを使用します。$ sudo podman login --tls-verify=false quay-server.example.com Username: quayadmin Password: Login Succeeded!
ルート認証局 (CA) を信頼するように Podman を設定する方法は、後続のセクションで説明します。
3.1.5. ブラウザーを使用した SSL 設定のテスト
Quay レジストリーへのアクセス (この場合は https://quay-server.example.com) を試みると、ブラウザーで潜在的なリスクが警告されます。
画面にログインすると、ブラウザーは接続が安全ではないことを通知します。
ルート認証局 (CA) を信頼するようにシステムを設定する方法は、後続のセクションで説明します。
3.1.6. 認証局を信頼するように Podman を設定する
Podman は、/etc/containers/certs.d/ および /etc/docker/certs.d/ の 2 つのパスを使用して CA ファイルを見つけます。
ルート CA ファイルをこれらの場所のいずれかにコピーし、サーバーのホスト名により判別されるパスを使用して、
ca.crtファイルに名前を付けます。$ sudo cp rootCA.pem /etc/containers/certs.d/quay-server.example.com/ca.crt
または、Docker を使用している場合は、ルート CA ファイルを同等の Docker ディレクトリーにコピーします。
$ sudo cp rootCA.pem /etc/docker/certs.d/quay-server.example.com/ca.crt
レジストリーにログインする際に、--tls-verify=false オプションを使用する必要がなくなります。
$ sudo podman login quay-server.example.com Username: quayadmin Password: Login Succeeded!
3.1.7. 認証局を信頼するようにシステムを設定
認証局を信頼するようにシステムを設定するには、次の手順を使用します。
手順
次のコマンドを入力して、
rootCA.pemファイルをシステム全体の統合トラストストアにコピーします。$ sudo cp rootCA.pem /etc/pki/ca-trust/source/anchors/
次のコマンドを入力して、システム全体のトラストストア設定を更新します。
$ sudo update-ca-trust extract
オプション:
trust listコマンドを使用して、Quayサーバーが設定されていることを確認できます。$ trust list | grep quay label: quay-server.example.comhttps://quay-server.example.comでレジストリーを参照すると、接続が安全であることを示すロックアイコンが表示されます。
rootCA.pemファイルをシステム全体の信頼から削除するには、ファイルを削除して設定を更新します。$ sudo rm /etc/pki/ca-trust/source/anchors/rootCA.pem
$ sudo update-ca-trust extract
$ trust list | grep quay
詳細は、RHEL 8 のドキュメントの 共有システム証明書の使用 を参照してください。