第1章 TLS レジストリーによるセキュリティー鍵および証明書の管理


TLS レジストリーは、TLS 設定を一元管理する Quarkus エクステンションです。アプリケーション全体のセキュアな接続の管理と保守を容易にします。TLS 設定を 1 カ所で集中して定義する場合、TLS レジストリーを使用して、アプリケーション内の複数のコンポーネントからこの設定を参照できます。これにより、一貫性が確保され、設定エラーの可能性が軽減されます。

TLS レジストリーは設定を統合し、複数の名前付き設定をサポートしています。したがって、さまざまなアプリケーションパーツに合わせて TLS 設定をカスタマイズできます。この柔軟性は、各コンポーネントに異なるセキュリティー設定が必要な場合に特に役立ちます。

Quarkus REST、gRPC などの互換性のあるエクステンションを使用すると、TLS レジストリーエクステンションがプロジェクトに自動的に追加されます。そのため、TLS レジストリーを使用するアプリケーションは、すぐにセキュアな通信を処理できるようになります。

TLS レジストリーは、証明書の自動再読み込みと、PKCS12、PEM、JKS などのさまざまなキーストアフォーマットとの互換性も提供します。

1.1. TLS レジストリーの使用

鍵やトラストストアを含め、TLS 接続を設定するには、quarkus.tls.* プロパティーを使用します。このプロパティーは次の場合に必要です。

  • デフォルトの TLS 設定を設定する (quarkus.tls.* の直下に定義)。
  • quarkus.tls.<name>.* を使用して、個別の名前付き設定を作成する。quarkus.tls.<name>.* プロパティーを指定することで、特定のコンポーネントの TLS 設定を調整できます。

1.1.1. HTTP サーバーの HTTPS の設定

クライアントとサーバー間のセキュアな通信を確保するには、多くの場合、クライアントがサーバーの信頼性を検証する必要があります。

  • サーバーは証明書と秘密鍵を含むキーストアを使用する必要があります。
  • サーバーの証明書を検証するために、クライアントにトラストストアを設定する必要があります。

TLS ハンドシェイク中に、サーバーは証明書を提示し、クライアントがそれを検証します。これにより、中間者攻撃を防ぎ、データ転送をセキュアに行うことができます。

次のセクションでは、PEM または PKCS12 キーストアタイプを使用して HTTPS を設定する方法を説明します。さらに、名前付き設定を使用して複数の TLS 設定を一度に指定および管理する方法も説明します。この方法を使用すると、それぞれに個別の設定を定義できます。

キーストアタイプに応じて、次のいずれかの設定例を使用してください。

  • PEM ファイルを使用する場合:

    quarkus.tls.key-store.pem.0.cert=server.crt
    quarkus.tls.key-store.pem.0.key=server.key
    quarkus.http.insecure-requests=disabled # Reject HTTP requests
  • p12 (PKCS12) キーストアを使用する場合:

    quarkus.tls.key-store.p12.path=server-keystore.p12
    quarkus.tls.key-store.p12.password=secret
    quarkus.http.insecure-requests=disabled # Reject HTTP requests
  • 複数の設定を名前で区別する場合:

    quarkus.tls.https.key-store.p12.path=server-keystore.p12
    quarkus.tls.https.key-store.p12.password=secret
    quarkus.http.insecure-requests=disabled
    quarkus.http.tls-configuration-name=https

1.1.2. クライアントの HTTPS の設定

次の例では、"hello" という名前の gRPC クライアントを、デフォルトの TLS 設定のトラストストアと HTTPS を使用するように設定します。

quarkus.tls.trust-store.jks.path=grpc-client-truststore.jks
quarkus.tls.trust-store.jks.password=password

quarkus.grpc.clients.hello.plain-text=false
quarkus.grpc.clients.hello.use-quarkus-grpc-client=true

1.1.3. mTLS の設定

Red Hat build of Quarkus アプリケーションで相互 TLS (mTLS) を設定するには、サーバーとクライアントにキーストアとトラストストアの両方を作成して管理することで、それぞれを設定します。

  • サーバーのキーストア: サーバーの証明書と秘密鍵が格納されます。
  • クライアントのキーストア: クライアントの証明書と秘密鍵が格納されます。
  • サーバーのトラストストア: クライアントを認証するためのクライアント証明書が保存されます。
  • クライアントのトラストストア: サーバーを認証するためのサーバーの証明書が保存されます。

    キーストアとトラストストアを指定するための設定例:

    quarkus.tls.my-server.key-store.p12.path=target/certs/grpc-keystore.p12
    quarkus.tls.my-server.key-store.p12.password=password
    quarkus.tls.my-server.trust-store.p12.path=target/certs/grpc-server-truststore.p12
    quarkus.tls.my-server.trust-store.p12.password=password
    
    quarkus.tls.my-client.trust-store.p12.path=target/certs/grpc-client-truststore.p12
    quarkus.tls.my-client.trust-store.p12.password=password
    quarkus.tls.my-client.key-store.p12.path=target/certs/grpc-client-keystore.p12
    quarkus.tls.my-client.key-store.p12.password=password
    
    quarkus.grpc.clients.hello.plain-text=false
    quarkus.grpc.clients.hello.tls-configuration-name=my-client
    quarkus.grpc.clients.hello.use-quarkus-grpc-client=true
    
    quarkus.http.ssl.client-auth=REQUIRED # Enable mTLS
    quarkus.http.insecure-requests=disabled
    quarkus.http.tls-configuration-name=my-server
    quarkus.grpc.server.use-separate-server=false
    quarkus.grpc.server.plain-text=false

    この設定により、サーバーとクライアントの両方が互いの証明書を検証することで mTLS が有効になり、セキュリティーがさらに強化されます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.