検索

第3章 Red Hat Quay の高度なデプロイメント

download PDF

3.1. SSL を使用した Red Hat Quay への接続の保護

3.1.1. SSL の使用について

自己署名証明書で Red Hat Quay を設定するには、認証局 (CA) を作成し、必要なキーおよび証明書ファイルを生成する必要があります。

以下の例では、/etc/hosts ファイルにエントリーを追加するなど、DNS または別の命名メカニズムを使用してサーバーホスト名 quay-server.example.com を設定していることを前提としています。

$ cat /etc/hosts
...
192.168.1.112   quay-server.example.com

3.1.2. 認証局を作成し、証明書に署名します。

この手順の最後に、証明書ファイルと、ssl.cert および ssl.key という名前のプライマリーキーファイルがあります。

3.1.2.1. 認証局の作成

  1. ルート CA キーを生成します。

    $ openssl genrsa -out rootCA.key 2048
  2. ルート CA 証明書を生成します。

    $ openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem
  3. サーバーのホスト名など、証明書の要求に組み込まれる情報を入力します。以下に例を示します。

    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.2.2. 証明書に署名します。

  1. サーバーキーを生成します。

    $ openssl genrsa -out ssl.key 2048
  2. 署名要求を生成します。

    $ openssl req -new -key ssl.key -out ssl.csr
  3. サーバーのホスト名など、証明書の要求に組み込まれる情報を入力します。以下に例を示します。

    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
  4. 以下のようにサーバーのホスト名を指定して、設定ファイルの openssl.cnf を作成します。

    opensssl.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

  5. 設定ファイルを使用して、証明書 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.3. UI を使用した SSL の設定

このセクションでは、Quay UI を使用して SSL を設定します。コマンドラインインターフェースを使用して SSL を設定するには、以下のセクションを参照してください。

  1. Quay コンテナーを設定モードで起動します。

    $ sudo podman run --rm -it --name quay_config -p 80:8080 -p 443:8443 registry.redhat.io/quay/quay-rhel8:v3.5.4 config secret
  2. Server Configuration セクションで、TLS に Red Hat Quay handle TLS を選択します。先に作成した証明書ファイルとプライベートキーファイルをアップロードし、証明書の作成時に Server Hostname が使用された値と一致することを確認します。更新された設定の検証およびダウンロード
  3. 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.5.4

3.1.4. コマンドラインを使用した SSL の設定

別のオプションとして、コマンドラインインターフェースを使用できます。

  1. 証明書ファイルとプライマリーキーファイルを設定ディレクトリーにコピーして、それぞれ ssl.certssl.key という名前が付けられていることを確認します。

    $ cp ~/ssl.cert $QUAY/config
    $ cp ~/ssl.key $QUAY/config
    $ cd $QUAY/config
  2. config.yaml ファイルを編集し、Quay で TLS を処理できるように指定します。

    config.yaml

    ...
    SERVER_HOSTNAME: quay-server.example.com
    ...
    PREFERRED_URL_SCHEME: https
    ...

  3. 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.5.4

3.1.5. コマンドラインを使用した 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.6. ブラウザーを使用した SSL 設定のテスト

Quay レジストリーへのアクセスを試みると (この場合は https://quay-server.example.com)、ブラウザーは潜在的なリスクについて警告します。

Potential risk

画面にログインすると、ブラウザーは接続が安全ではないことを通知します。

Connection not secure

ルート認証局 (CA) を信頼するようにシステムを設定する方法は、後続のセクションで説明します。

3.1.7. 認証局を信頼するように 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.8. 認証局を信頼するようにシステムを設定する

  1. ルート CA ファイルを統合されたシステム全体のトラストストアにコピーします。

    $ sudo cp rootCA.pem /etc/pki/ca-trust/source/anchors/
  2. システム全体のトラストストア設定を更新します。

    $ sudo update-ca-trust extract
  3. trust list コマンドを使用して、Quay サーバーが設定されていることを確認できます。

    $ trust list | grep quay
        label: quay-server.example.com

    https://quay-server.example.com でレジストリーを参照すると、接続が安全であることを示すロックアイコンが表示されます。

    Connection not secure

  4. システム全体の信頼からルート CA を削除するには、ファイルを削除し、設定を更新します。

    $ sudo rm /etc/pki/ca-trust/source/anchors/rootCA.pem
    $ sudo update-ca-trust extract
    $ trust list | grep quay
    $

詳細は、RHEL 8 のドキュメントの共有システム証明書の使用について参照してください。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.