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


Red Hat build of Quarkus 3.15

Red Hat Customer Content Services

概要

TLS レジストリーは、TLS 設定を一元管理する Quarkus エクステンションです。アプリケーション全体のセキュアな接続の管理と保守を容易にします。

Red Hat build of Quarkus ドキュメントへのフィードバックの提供

エラーを報告したり、ドキュメントを改善したりするには、Red Hat Jira アカウントにログインし、課題を送信してください。Red Hat Jira アカウントをお持ちでない場合は、アカウントを作成するように求められます。

手順

  1. 次のリンクをクリックして チケットを作成します
  2. Summary に課題の簡単な説明を入力します。
  3. Description に課題や機能拡張の詳細な説明を入力します。問題があるドキュメントのセクションへの URL も記載してください。
  4. Submit をクリックすると、課題が作成され、適切なドキュメントチームに転送されます。

第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
    Copy to Clipboard Toggle word wrap
  • 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
    Copy to Clipboard Toggle word wrap
  • 複数の設定を名前で区別する場合:

    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
    Copy to Clipboard Toggle word wrap

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
Copy to Clipboard Toggle word wrap

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
    Copy to Clipboard Toggle word wrap

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

1.2. TLS 設定の参照

TLS レジストリーの使用 で説明されているように、quarkus.tls.<name>.* プロパティーを使用して作成したサンプルの 名前付き 設定を参照するには、次の例に示すように tls-configuration-name プロパティーを使用します。

コア HTTP サーバーの設定例:

# Reference the named configuration
quarkus.http.tls-configuration-name=MY_TLS_CONFIGURATION
Copy to Clipboard Toggle word wrap

gRPC クライアントの設定例:

quarkus.grpc.clients.hello.tls-configuration-name=MY_TLS_CONFIGURATION
Copy to Clipboard Toggle word wrap

1.3. TLS の設定

TLS 設定は、キーストアとトラストストアの管理を中心としています。具体的な設定は、PEM、P12、JKS など、使用するフォーマットによって異なります。

次のセクションでは、TLS を設定するために使用できるさまざまなプロパティーを説明します。

1.3.1. キーストア

キーストアは、秘密鍵と証明書を保存するために使用されます。これは主にサーバー側で使用されますが、mTLS を使用する場合はクライアント側でも使用できます。

1.3.1.1. PEM キーストア

Privacy Enhanced Mail (PEM) キーストアは、ファイルペアのリストから構成されます。

  • 証明書ファイル - .crt または .pem ファイル
  • 秘密鍵ファイル - 多くの場合は .key ファイル

PEM キーストアを設定するには、次のように指定します。

quarkus.tls.key-store.pem.a.cert=server.crt
quarkus.tls.key-store.pem.a.key=server.key
quarkus.tls.key-store.pem.b.cert=my-second-cert.crt
quarkus.tls.key-store.pem.b.key=my-second-key.key
Copy to Clipboard Toggle word wrap

ほとんどの場合、必要なものは証明書と秘密鍵で構成される 1 つのペアだけです。証明書が証明書チェーンの一部である場合でも、キーストアに含まれる秘密鍵は、エンドエンティティー証明書に対応するもの 1 つだけです。

複数のペアが設定されている場合、設定された証明書と秘密鍵のペアの 1 つが、Server Name Indication (SNI) に基づいて選択されます。クライアントは接続しようとしているサーバーの名前を送信し、サーバーは適切な証明書と秘密鍵のペアを選択します。この機能を使用するには、クライアントとサーバーの両方で SNI が有効になっていることを確認してください。

重要

複数の鍵ペアまたは証明書ペアを設定する場合、サーバーはデフォルトで名前の辞書順で設定されるペアを実行します。前の例の store.pem.astore.pem.b を参照してください。辞書順が最も下位のペアが最初に実行されます。これを変更するには、quarkus.tls.key-store.pem.order プロパティーを使用して順序を定義します。たとえば、quarkus.tls.key-store.pem.order=b,c,a です。

この設定は、最初に指定されたペアをデフォルトとして使用するため、SNI を使用する場合に重要です。

1.3.1.2. PKCS12 キーストア

PKCS12 キーストアは、証明書と秘密鍵を含む単一のファイルです。

PKCS12 キーストアを設定するには、次のように指定します。

quarkus.tls.key-store.p12.path=server-keystore.p12
quarkus.tls.key-store.p12.password=secret
Copy to Clipboard Toggle word wrap

.p12 ファイルはパスワードで保護されているため、キーストアを開くにはパスワードを指定する必要があります。

このファイルには、複数の証明書と秘密鍵を含めることができます。その場合は、次のいずれかの操作を実行してください。

  • 使用する証明書と秘密鍵のエイリアスを指定して設定します。

    quarkus.tls.key-store.p12.path=server-keystore.p12
    quarkus.tls.key-store.p12.password=secret
    quarkus.tls.key-store.p12.alias=my-alias
    quarkus.tls.key-store.p12.alias-password=my-alias-password
    Copy to Clipboard Toggle word wrap
  • または、SNI を使用して適切な証明書と秘密鍵を選択します。すべての鍵に同じパスワードを使用する必要があることに注意してください。
1.3.1.3. JKS キーストア

JKS キーストアは、サーバーまたはクライアントの証明書と秘密鍵を含む単一のファイルです。TLS/SSL 接続で認証してセキュアな通信を確立するために使用されます。

重要

JKS は古いフォーマットですが、今でも広く使用されている Java 固有のフォーマットです。ただし、このフォーマットを扱うには、現在では非推奨となっている特定の Java ツールを使用する必要があります。したがって、Red Hat build of Quarkus アプリケーションでの使用は推奨しません。

また、OpenShift cert-manager や Let’s Encrypt は、通常 JKS を提供せず、現在も PEM しか提供しません。

JKS キーストアを設定するには、次のように指定します。

quarkus.tls.key-store.jks.path=server-keystore.jks
quarkus.tls.key-store.jks.password=secret
Copy to Clipboard Toggle word wrap

.jks ファイルはパスワードで保護されているため、キーストアを開くにはパスワードを指定する必要があります。また、複数の証明書と秘密鍵を含めることができます。その場合は、以下を実行します。

  • 使用する証明書と秘密鍵のエイリアスを指定して設定します。

    quarkus.tls.key-store.jks.path=server-keystore.jks
    quarkus.tls.key-store.jks.password=secret
    quarkus.tls.key-store.jks.alias=my-alias
    quarkus.tls.key-store.jks.alias-password=my-alias-password
    Copy to Clipboard Toggle word wrap
  • または、SNI を使用して適切な証明書と秘密鍵を選択します。すべての鍵に同じパスワードを使用する必要があることに注意してください。
1.3.1.4. SNI

Server Name Indication (SNI) は、TLS ハンドシェイク中にクライアントが接続を試みるホスト名を指定できるようにする TLS エクステンションです。SNI を使用すると、サーバーが単一の IP アドレス上の複数のドメインに対して異なる TLS 証明書を提示できるようになります。これにより、仮想ホスティングシナリオでセキュアな通信が容易になります。

SNI を有効にするには、次のように指定します。

quarkus.tls.key-store.sni=true # Disabled by default
Copy to Clipboard Toggle word wrap

SNI が有効な場合、クライアントは TLS ハンドシェイク中にサーバー名を示します。これにより、サーバーが適切な証明書を選択できるようになります。

  • PEM ファイルを使用してキーストアを設定する場合は、複数の証明書 (CRT) ファイルと鍵ファイルを提供する必要があります。CRT は、X.509 証明書ファイルの一般的なファイル拡張子であり、通常は PEM (Privacy-Enhanced Mail) フォーマットです。このファイルには公開証明書が含まれています。
  • JKS または P12 ファイルを使用してキーストアを設定する場合、サーバーが TLS ハンドシェイク中にクライアントによって提供された SNI ホスト名に基づいて適切な証明書を選択します。サーバーは、SNI ホスト名を、キーストアに保存されている証明書に設定されているコモンネーム (CN) またはサブジェクト代替名 (SAN) と照合します。すべてのキーストアとエイリアスのパスワードが同一である必要があります。
1.3.1.5. 認証情報プロバイダー

設定でキーストアのパスワードとエイリアスのパスワードを渡す代わりに、認証情報プロバイダーを使用できます。

認証情報プロバイダーは、キーストアとエイリアスのパスワードを取得する方法として機能します。認証情報プロバイダーは、設定でパスワードまたはエイリアスパスワードが設定されていない場合にのみ使用されることに注意してください。

認証情報プロバイダーを設定するには、次のように指定します。

# The name of the credential bucket in the credentials provider
quarkus.tls.key-store.credentials-provider.name=my-credentials

# The name of the bean providing the credential provider (optional, using the default credential provider if not set)
quarkus.tls.key-store.credentials-provider.bean-name=my-credentials-provider

# The key used to retrieve the keystore password, `password` by default
quarkus.tls.key-store.credentials-provider.password-key=password

# The key used to retrieve the alias password, `alias-password` by default
quarkus.tls.key-store.credentials-provider.alias-password-key=alias-password
Copy to Clipboard Toggle word wrap
重要

認証情報プロバイダーは、PKCS12 および JKS キーストアでのみ使用できます。

1.3.2. トラストストア

トラストストアは、信頼できる当事者の証明書を保存するために使用されます。通常の TLS では、クライアントがトラストストアを使用してサーバーを認証します。相互 TLS (mTLS) では、サーバーとクライアントの両方がトラストストアを使用して相互に認証します。

1.3.2.1. PEM トラストストア

PEM トラストストアは、.crt ファイルまたは .pem ファイルのリストで構成されます。それぞれのファイルに証明書が含まれています。

PEM トラストストアを設定するには、次のように指定します。

quarkus.tls.trust-store.pem.certs=ca.crt,ca2.pem
Copy to Clipboard Toggle word wrap
1.3.2.2. PKCS12 トラストストア

PKCS12 トラストストアは、証明書を含む単一のファイルです。複数の証明書が含まれている場合は、エイリアスを使用して適切な証明書を選択できます。

PKCS12 トラストストアを設定するには、次のように指定します。

quarkus.tls.trust-store.p12.path=client-truststore.p12
quarkus.tls.trust-store.p12.password=password
quarkus.tls.trust-store.p12.alias=my-alias
Copy to Clipboard Toggle word wrap

.p12 ファイルはパスワードで保護されているため、トラストストアを開くにはパスワードを指定する必要があります。ただし、キーストアとは異なり、トラストストアには秘密鍵ではなく公開証明書が含まれているため、エイリアスにパスワードは必要ありません。

1.3.2.3. JKS トラストストア

JKS トラストストアは、複数の証明書を含む単一のファイルです。複数の証明書が存在する場合は、エイリアスを使用して適切な証明書を選択できます。ただし、JKS フォーマットは PKCS12 よりもセキュリティーが低いため、使用しないでください。

JKS トラストストアを設定するには、次のように指定します。

quarkus.tls.trust-store.jks.path=client-truststore.jks
quarkus.tls.trust-store.jks.password=password
quarkus.tls.trust-store.jks.alias=my-alias
Copy to Clipboard Toggle word wrap

.jks ファイルはパスワードで保護されているため、トラストストアを開くにはパスワードを指定する必要があります。ただし、キーストアとは異なり、トラストストアには秘密鍵ではなく公開証明書が含まれているため、エイリアスにパスワードは必要ありません。

1.3.2.4. 認証情報プロバイダー

設定でトラストストアのパスワードを渡す代わりに、認証情報プロバイダーを使用できます。認証情報プロバイダーを使用すると、パスワードやその他の認証情報を取得できます。認証情報プロバイダーは、設定でパスワードが指定されていない場合にのみ使用されることに注意してください。

認証情報プロバイダーを設定するには、次のように指定します。

# The name of the credential bucket in the credentials provider
quarkus.tls.trust-store.credentials-provider.name=my-credentials

# The name of the bean providing the credential provider (optional, using the default credential provider if not set)
quarkus.tls.trust-store.credentials-provider.bean-name=my-credentials-provider

# The key used to retrieve the truststore password, `password` by default
quarkus.tls.trust-store.credentials-provider.password-key=password
Copy to Clipboard Toggle word wrap
重要

認証情報プロバイダーは、PKCS12 および JKS トラストストアでのみ使用できます。

1.3.3. その他のプロパティー

キーストアとトラストストアは最も重要なプロパティーですが、TLS を設定するために使用できる他のプロパティーもあります。

注記

次の例では デフォルト の設定を使用していますが、プロパティーの前に設定名を付けることで、名前付き 設定を使用することもできます。

1.3.3.1. 暗号スイート

暗号スイートは、TLS ハンドシェイク中に使用できる暗号のリストです。有効な暗号スイートの順序付きリストを設定できます。設定されていない場合は、組み込みの暗号の中から適切なデフォルトが選択されます。ただし、設定を指定すると、その設定が、使用中の SSL エンジンによって定義されているデフォルトスイートよりも優先されます。

暗号スイートを設定するには、次のように指定します。

quarkus.tls.cipher-suites=TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384
Copy to Clipboard Toggle word wrap
1.3.3.2. TLS プロトコルのバージョン

TLS プロトコルバージョンは、TLS ハンドシェイク中に使用できるプロトコルのリストです。有効な TLS プロトコルバージョンを、コンマ区切りの順序付きリストとして指定します。関連する設定プロパティーは、quarkus.tls.protocols (名前付き TLS 設定の場合は quarkus.tls.<name>.protocols) です。設定されていない場合は、デフォルトで TLSv1.3, TLSv1.2 になります。

使用可能なオプションは、TLSv1TLSv1.1TLSv1.2、および TLSv1.3 です。

たとえば、TLSv1.3 のみを有効にするには、次のように指定します。

quarkus.tls.protocols=TLSv1.3
Copy to Clipboard Toggle word wrap
1.3.3.3. ハンドシェイクのタイムアウト

TLS 接続確立時の最初のステップは、ハンドシェイクフェーズです。このフェーズでは、クライアントとサーバーが接続を確立するために情報を交換します。これには通常、暗号スイート、TLS プロトコルバージョン、証明書の検証が含まれます。

ハンドシェイクフェーズのタイムアウトを設定するには、次のように指定します。

quarkus.tls.handshake-timeout=10S # Default.
Copy to Clipboard Toggle word wrap
1.3.3.4. ALPN

Application-Layer Protocol Negotiation (ALPN) は、TLS ハンドシェイク中にクライアントとサーバーが通信に使用するプロトコルをネゴシエートできるようにする TLS エクステンションです。ALPN は、TLS 接続を確立する前にクライアントが優先するアプリケーションプロトコルをサーバーに指示できるようにすることで、より効率的な通信を可能にします。

これは、複数のプロトコルが利用できる可能性がある HTTP/2 などのシナリオで役立ち、プロトコルの選択を高速化します。

ALPN はデフォルトで有効になっています。

  • 無効にするには、次のように指定します。

    quarkus.tls.alpn=false
    Copy to Clipboard Toggle word wrap
    警告

    ALPN を無効にすることは、エキスパート以外には推奨されません。特に HTTP/2 などのプロトコルで、パフォーマンスの低下、プロトコルネゴシエーションの問題、予期しない動作が発生する可能性があるためです。ただし、ALPN の無効化は、プロトコルネゴシエーションによって競合が発生する特殊なケースで、固有の不整合を診断したり、パフォーマンスをテストしたりするのに役立ちます。

1.3.3.5. 証明書失効リスト (CRL)

証明書失効リスト (CRL) は、予定の有効期限より前に発行元の認証局 (CA) によって失効させられたデジタル証明書のリストです。証明書が侵害されたり、不要になったり、無効と判断されたりした場合、CA は証明書を CRL に追加して、その証明書を信頼しないよう証明書利用者に通知します。

CRL は、DER または PKCS#7 (P7B) フォーマットを使用して、信頼できなくなった証明書ファイルのリストで設定できます。

  • DER フォーマットの場合、DER でエンコードされた CRL を渡します。
  • PKCS#7 フォーマットの場合、SignedData オブジェクトを渡します。この場合、重要なフィールドは crls だけです。

CRL を設定するには、次のように指定します。

quarkus.tls.certificate-revocation-list=ca.crl, ca2.crl
Copy to Clipboard Toggle word wrap
1.3.3.6. すべての証明書とホスト名の検証を信頼する

すべての証明書を信頼し、ホスト名の検証を無効にするように TLS 接続を設定できます。これらは 2 つの異なるプロセスであることに注意してください。

  • すべての証明書を信頼すると、証明書の検証が無視されるため、すべての証明書が信頼されます。この方法は自己署名証明書を使用したテストには便利ですが、実稼働環境では使用しないでください。
  • ホスト名の検証は、サーバーのアイデンティティーを検証するプロセスです。

これは中間者攻撃を防ぐのに役立ち、多くの場合、デフォルトで HTTPS または LDAPS に設定されます。

重要

この 2 つのプロパティーは実稼働環境では使用しないでください。

すべての証明書を信頼するには、次のように指定します。

quarkus.tls.trust-all=true
Copy to Clipboard Toggle word wrap

ホスト名の検証を無効にするには、次のように指定します。

quarkus.tls.hostname-verification-algorithm=NONE
Copy to Clipboard Toggle word wrap

1.3.4. 設定の参照

次の表に、サポートされているプロパティーを示します。

🔒 ビルド時に固定: 設定プロパティーはビルド時に固定されます。他のすべての設定プロパティーは実行時にオーバーライドできます。

Expand

設定プロパティー

デフォルト

🔒 ビルド時に修正 quarkus.tls.lets-encrypt.enabled

Let’s Encrypt のサポートを有効にするには true に設定します。

環境変数: QUARKUS_TLS_LETS_ENCRYPT_ENABLED

boolean

false

quarkus.tls.key-store.pem.order

keyCerts マップ内の名前に基づく鍵/証明書ファイルの順序。

デフォルトでは、Quarkus は辞書順を使用して鍵をソートします。このプロパティーを使用すると、鍵/証明書ファイルの順序を指定できます。

環境変数: QUARKUS_TLS_KEY_STORE_PEM_ORDER

list of string

 

quarkus.tls.key-store.p12.path

キーストアファイルへのパス (P12/PFX フォーマット)。

環境変数: QUARKUS_TLS_KEY_STORE_P12_PATH

path

必須 ⚠️ 必須

quarkus.tls.key-store.p12.password

キーストアのパスワード。設定されていない場合、認証情報プロバイダーからパスワードを取得する必要があります。

環境変数: QUARKUS_TLS_KEY_STORE_P12_PASSWORD

string

 

quarkus.tls.key-store.p12.alias

キーストア内の秘密鍵と証明書のエイリアス。

環境変数: QUARKUS_TLS_KEY_STORE_P12_ALIAS

string

 

quarkus.tls.key-store.p12.alias-password

キーストア内のエイリアスのパスワード。設定されていない場合、パスワードは認証情報プロバイダーから取得されます。

環境変数: QUARKUS_TLS_KEY_STORE_P12_ALIAS_PASSWORD

string

 

quarkus.tls.key-store.p12.provider

キーストアのプロバイダー。

環境変数: QUARKUS_TLS_KEY_STORE_P12_PROVIDER

string

 

quarkus.tls.key-store.jks.path

キーストアファイルへのパス (JKS フォーマット)。

環境変数: QUARKUS_TLS_KEY_STORE_JKS_PATH

path

必須 ⚠️ 必須

quarkus.tls.key-store.jks.password

キーストアのパスワード。設定されていない場合、認証情報プロバイダーからパスワードを取得する必要があります。

環境変数: QUARKUS_TLS_KEY_STORE_JKS_PASSWORD

string

 

quarkus.tls.key-store.jks.alias

キーストア内の秘密鍵と証明書のエイリアス。

環境変数: QUARKUS_TLS_KEY_STORE_JKS_ALIAS

string

 

quarkus.tls.key-store.jks.alias-password

キーストア内のエイリアスのパスワード。設定されていない場合、パスワードを認証情報プロバイダーから取得できます。

環境変数: QUARKUS_TLS_KEY_STORE_JKS_ALIAS_PASSWORD

string

 

quarkus.tls.key-store.jks.provider

キーストアのプロバイダー。

環境変数: QUARKUS_TLS_KEY_STORE_JKS_PROVIDER

string

 

quarkus.tls.key-store.sni

Server Name Indication (SNI) を有効にします。

Server Name Indication (SNI) は、TLS ハンドシェイク中にクライアントが接続を試みるホスト名を指定できるようにする TLS エクステンションです。これを使用すると、サーバーが単一の IP アドレス上の複数のドメインに対して異なる SSL 証明書を提示できるようになります。これにより、仮想ホスティングシナリオでセキュアな通信が容易になります。

この設定が有効な場合、クライアントは TLS ハンドシェイク中にサーバー名を示します。これにより、サーバーが適切な証明書を選択できるようになります。

PEM ファイルを使用してキーストアを設定する場合は、複数の CRT/鍵を指定する必要があります。JKS または P12 ファイルを使用してキーストアを設定する場合、SNI ホスト名に基づいて 1 つのエイリアスが選択されます。この場合、すべてのキーストアパスワードとエイリアスパスワードが同じである必要があります (password および alias-password プロパティーで設定)。alias プロパティーを設定しないでください。

環境変数: QUARKUS_TLS_KEY_STORE_SNI

boolean

false

quarkus.tls.key-store.credentials-provider.name

io.quarkus.credentials.CredentialsProvider から取得する "認証情報" バケットの名前 (マップキー → パスワード)。設定されていない場合、認証情報プロバイダーは使用されません。

認証情報プロバイダーは、キーストアのパスワードとエイリアスのパスワードを取得する方法として機能します。認証情報プロバイダーは、設定でパスワードが指定されていない場合にのみ使用されることに注意してください。

環境変数: QUARKUS_TLS_KEY_STORE_CREDENTIALS_PROVIDER_NAME

string

 

quarkus.tls.key-store.credentials-provider.bean-name

認証情報プロバイダーを提供する Bean の名前。

この名前は、使用する認証情報プロバイダーを選択するために使用されます。認証情報プロバイダーは CDI Bean として公開されている必要があります。また、選択されるように設定された名前に @Named アノテーションが設定されている必要があります。

設定されていない場合、デフォルトの認証情報プロバイダーが使用されます。

環境変数: QUARKUS_TLS_KEY_STORE_CREDENTIALS_PROVIDER_BEAN_NAME

string

 

quarkus.tls.key-store.credentials-provider.password-key

キーストアのパスワードを取得するために使用されるキー。

選択した認証情報プロバイダーがキーをサポートしていない場合、パスワードは取得されません。サポートしている場合、取得された値がキーストアを開くために使用されます。

環境変数: QUARKUS_TLS_KEY_STORE_CREDENTIALS_PROVIDER_PASSWORD_KEY

string

password

quarkus.tls.key-store.credentials-provider.alias-password-key

キーストアのエイリアスパスワードを取得するために使用されるキー。

選択した認証情報プロバイダーにキーが含まれていない場合、エイリアスパスワードは取得されません。含まれている場合、取得された値がキーストアからエイリアスの private key にアクセスするために使用されます。

環境変数: QUARKUS_TLS_KEY_STORE_CREDENTIALS_PROVIDER_ALIAS_PASSWORD_KEY

string

alias-password

quarkus.tls.trust-store.pem.certs

信頼済み証明書のパスのリスト (Pem フォーマット)。

環境変数: QUARKUS_TLS_TRUST_STORE_PEM_CERTS

list of path

 

quarkus.tls.trust-store.p12.path

トラストストアファイルへのパス (P12/PFX フォーマット)。

環境変数: QUARKUS_TLS_TRUST_STORE_P12_PATH

path

必須 ⚠️ 必須

quarkus.tls.trust-store.p12.password

トラストストアのパスワード。設定されていない場合、認証情報プロバイダーからパスワードを取得する必要があります。

環境変数: QUARKUS_TLS_TRUST_STORE_P12_PASSWORD

string

 

quarkus.tls.trust-store.p12.alias

トラストストアのエイリアス。

環境変数: QUARKUS_TLS_TRUST_STORE_P12_ALIAS

string

 

quarkus.tls.trust-store.p12.provider

トラストストアのプロバイダー。

環境変数: QUARKUS_TLS_TRUST_STORE_P12_PROVIDER

string

 

quarkus.tls.trust-store.jks.path

トラストストアファイルへのパス (JKS フォーマット)。

環境変数: QUARKUS_TLS_TRUST_STORE_JKS_PATH

path

必須 ⚠️ 必須

quarkus.tls.trust-store.jks.password

トラストストアのパスワード。設定されていない場合、認証情報プロバイダーからパスワードを取得する必要があります。

環境変数: QUARKUS_TLS_TRUST_STORE_JKS_PASSWORD

string

 

quarkus.tls.trust-store.jks.alias

トラストストア内の鍵のエイリアス。

環境変数: QUARKUS_TLS_TRUST_STORE_JKS_ALIAS

string

 

quarkus.tls.trust-store.jks.provider

トラストストアのプロバイダー。

環境変数: QUARKUS_TLS_TRUST_STORE_JKS_PROVIDER

string

 

quarkus.tls.trust-store.credentials-provider.name

io.quarkus.credentials.CredentialsProvider から取得する "認証情報" バケットの名前 (マップキー → パスワード)。設定されていない場合、認証情報プロバイダーは使用されません。

認証情報プロバイダーは、キーストアのパスワードとエイリアスのパスワードを取得する方法として機能します。認証情報プロバイダーは、設定でパスワードが指定されていない場合にのみ使用されることに注意してください。

環境変数: QUARKUS_TLS_TRUST_STORE_CREDENTIALS_PROVIDER_NAME

string

 

quarkus.tls.trust-store.credentials-provider.bean-name

認証情報プロバイダーを提供する Bean の名前。

この名前は、使用する認証情報プロバイダーを選択するために使用されます。認証情報プロバイダーは CDI Bean として公開されている必要があります。また、選択されるように設定された名前に @Named アノテーションが設定されている必要があります。

設定されていない場合、デフォルトの認証情報プロバイダーが使用されます。

環境変数: QUARKUS_TLS_TRUST_STORE_CREDENTIALS_PROVIDER_BEAN_NAME

string

 

quarkus.tls.trust-store.credentials-provider.password-key

トラストストアのパスワードを取得するために使用されるキー。

選択した認証情報プロバイダーに設定されたキーが含まれていない場合、パスワードは取得されません。含まれている場合、取得された値がトラストストアを開くために使用されます。

環境変数: QUARKUS_TLS_TRUST_STORE_CREDENTIALS_PROVIDER_PASSWORD_KEY

string

password

quarkus.tls.cipher-suites

有効な暗号スイートの順序付きリストを設定します。何も指定されていない場合、組み込みの暗号の中から適切なデフォルトが選択されます。

スイートが設定されている場合、使用中の SSLEngineOptions によって定義されているデフォルトのスイートよりも優先されます。

環境変数: QUARKUS_TLS_CIPHER_SUITES

list of string

 

quarkus.tls.protocols

有効な TLS プロトコルの順序付きリストを設定します。

設定されていない場合、デフォルトで "TLSv1.3, TLSv1.2" になります。サポートされているプロトコルのリストは、TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 です。TLSv1.3 のみを有効にするには、値を to "TLSv1.3" に設定します。

空のリストを設定して TLS を有効にすることは無効であることに注意してください。少なくとも 1 つのプロトコルが必要です。

また、このプロパティーを設定すると、デフォルトのプロトコルのリストが置き換えられます。

環境変数: QUARKUS_TLS_PROTOCOLS

list of string

TLSv1.3,TLSv1.2

quarkus.tls.handshake-timeout

TLS ハンドシェイクフェーズのタイムアウト。

設定されていない場合、デフォルトで 10 秒になります。

環境変数: QUARKUS_TLS_HANDSHAKE_TIMEOUT

持続期間 の Kafka 期間の形式

10S

quarkus.tls.alpn

Application-Layer Protocol Negotiation (ALPN) を有効にします。

Application-Layer Protocol Negotiation は、TLS ハンドシェイク中にクライアントとサーバーが通信に使用するプロトコルをネゴシエートできるようにする TLS エクステンションです。ALPN は、TLS 接続を確立する前にクライアントが優先するアプリケーションプロトコルをサーバーに指示できるようにすることで、より効率的な通信を可能にします。これは、複数のプロトコルが利用できる可能性がある HTTP/2 などのシナリオで役立ち、プロトコルの選択を高速化します。

環境変数: QUARKUS_TLS_ALPN

boolean

true

quarkus.tls.certificate-revocation-list

失効した証明書 (ファイルへのパス) のリストを設定します。

証明書失効リスト (CRL) は、予定の有効期限より前に発行元の認証局 (CA) によって失効させられたデジタル証明書のリストです。証明書が侵害されたり、不要になったり、何らかの理由で無効と判断されたりした場合、CA は証明書を CRL に追加して、その証明書を信頼しないよう証明書利用者に通知します。

許可されるフォーマットは DER と PKCS#7 (P7B とも呼ばれます) の 2 つです。DER フォーマットを使用する場合は、DER でエンコードされた CRL を渡す必要があります。PKCS#7 フォーマットを使用する場合、PKCS#7 SignedData オブジェクトを渡す必要があります。この場合、重要なフィールドは crls だけです。

環境変数: QUARKUS_TLS_CERTIFICATE_REVOCATION_LIST

list of path

 

quarkus.tls.trust-all

true に設定すると、サーバーがすべての証明書を信頼します。

これはテストには便利ですが、実稼働環境では使用しないでください。

環境変数: QUARKUS_TLS_TRUST_ALL

boolean

false

quarkus.tls.hostname-verification-algorithm

サーバーのアイデンティティーをチェックする必要がある場合に使用するホスト名検証アルゴリズム。HTTPS (デフォルト)、LDAPS、または NONE にする必要があります。

NONE に設定すると、ホスト名は検証されません。

設定されていない場合、設定されたエクステンションによって、使用するデフォルトのアルゴリズムが決定されます。たとえば、HTTP の場合は "HTTPS" になります。TCP の場合はプロトコルによって異なります。ただし、"HTTPS" または "LDAPS" に設定することを推奨します。

環境変数: QUARKUS_TLS_HOSTNAME_VERIFICATION_ALGORITHM

string

 

quarkus.tls.reload-period

設定すると、サーバーが証明書を (たとえばファイルシステムから) 再読み込みし、再読み込みが成功した場合は CertificateUpdatedEvent を発行します。

このプロパティーは、証明書を再読み込みする期間を設定します。設定されていない場合、証明書は自動的に再読み込みされません。ただし、その場合もアプリケーションは io.quarkus.tls.TlsConfiguration#reload() メソッドを使用して手動で再読み込みをトリガーし、CertificateUpdatedEvent を手動で起動することができます。

起動されたイベントは、証明書が更新されたことをアプリケーションに通知し、実際の証明書の切り替えを続行するために使用されます。

環境変数: QUARKUS_TLS_RELOAD_PERIOD

持続期間 の Kafka 期間の形式

 

quarkus.tls.key-store.pem."key-certs".key

キーファイルへのパス (PEM フォーマット)。

環境変数: QUARKUS_TLS_KEY_STORE_PEM__KEY_CERTS__KEY

path

必須 ⚠️ 必須

quarkus.tls.key-store.pem."key-certs".cert

証明書ファイルへのパス (PEM フォーマット)。

環境変数: QUARKUS_TLS_KEY_STORE_PEM__KEY_CERTS__CERT

path

必須 ⚠️ 必須

quarkus.tls."tls-bucket-name".key-store.pem."key-certs".key

キーファイルへのパス (PEM フォーマット)。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_PEM__KEY_CERTS__KEY

path

必須 ⚠️ 必須

quarkus.tls."tls-bucket-name".key-store.pem."key-certs".cert

証明書ファイルへのパス (PEM フォーマット)。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_PEM__KEY_CERTS__CERT

path

必須 ⚠️ 必須

quarkus.tls."tls-bucket-name".key-store.pem.order

keyCerts マップ内の名前に基づく鍵/証明書ファイルの順序。

デフォルトでは、Quarkus は辞書順を使用して鍵をソートします。このプロパティーを使用すると、鍵/証明書ファイルの順序を指定できます。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_PEM_ORDER

list of string

 

quarkus.tls."tls-bucket-name".key-store.p12.path

キーストアファイルへのパス (P12/PFX フォーマット)。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_P12_PATH

path

必須 ⚠️ 必須

quarkus.tls."tls-bucket-name".key-store.p12.password

キーストアのパスワード。設定されていない場合、認証情報プロバイダーからパスワードを取得する必要があります。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_P12_PASSWORD

string

 

quarkus.tls."tls-bucket-name".key-store.p12.alias

キーストア内の秘密鍵と証明書のエイリアス。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_P12_ALIAS

string

 

quarkus.tls."tls-bucket-name".key-store.p12.alias-password

キーストア内のエイリアスのパスワード。設定されていない場合、パスワードは認証情報プロバイダーから取得されます。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_P12_ALIAS_PASSWORD

string

 

quarkus.tls."tls-bucket-name".key-store.p12.provider

キーストアのプロバイダー。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_P12_PROVIDER

string

 

quarkus.tls."tls-bucket-name".key-store.jks.path

キーストアファイルへのパス (JKS フォーマット)。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_JKS_PATH

path

必須 ⚠️ 必須

quarkus.tls."tls-bucket-name".key-store.jks.password

キーストアのパスワード。設定されていない場合、認証情報プロバイダーからパスワードを取得する必要があります。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_JKS_PASSWORD

string

 

quarkus.tls."tls-bucket-name".key-store.jks.alias

キーストア内の秘密鍵と証明書のエイリアス。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_JKS_ALIAS

string

 

quarkus.tls."tls-bucket-name".key-store.jks.alias-password

キーストア内のエイリアスのパスワード。設定されていない場合、パスワードを認証情報プロバイダーから取得できます。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_JKS_ALIAS_PASSWORD

string

 

quarkus.tls."tls-bucket-name".key-store.jks.provider

キーストアのプロバイダー。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_JKS_PROVIDER

string

 

quarkus.tls."tls-bucket-name".key-store.sni

Server Name Indication (SNI) を有効にします。

Server Name Indication (SNI) は、TLS ハンドシェイク中にクライアントが接続を試みるホスト名を指定できるようにする TLS エクステンションです。これを使用すると、サーバーが単一の IP アドレス上の複数のドメインに対して異なる SSL 証明書を提示できるようになります。これにより、仮想ホスティングシナリオでセキュアな通信が容易になります。

この設定が有効な場合、クライアントは TLS ハンドシェイク中にサーバー名を示します。これにより、サーバーが適切な証明書を選択できるようになります。

PEM ファイルを使用してキーストアを設定する場合は、複数の CRT/鍵を指定する必要があります。JKS または P12 ファイルを使用してキーストアを設定する場合、SNI ホスト名に基づいて 1 つのエイリアスが選択されます。この場合、すべてのキーストアパスワードとエイリアスパスワードが同じである必要があります (password および alias-password プロパティーで設定)。alias プロパティーを設定しないでください。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_SNI

boolean

false

quarkus.tls."tls-bucket-name".key-store.credentials-provider.name

io.quarkus.credentials.CredentialsProvider から取得する "認証情報" バケットの名前 (マップキー → パスワード)。設定されていない場合、認証情報プロバイダーは使用されません。

認証情報プロバイダーは、キーストアのパスワードとエイリアスのパスワードを取得する方法として機能します。認証情報プロバイダーは、設定でパスワードが指定されていない場合にのみ使用されることに注意してください。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_CREDENTIALS_PROVIDER_NAME

string

 

quarkus.tls."tls-bucket-name".key-store.credentials-provider.bean-name

認証情報プロバイダーを提供する Bean の名前。

この名前は、使用する認証情報プロバイダーを選択するために使用されます。認証情報プロバイダーは CDI Bean として公開されている必要があります。また、選択されるように設定された名前に @Named アノテーションが設定されている必要があります。

設定されていない場合、デフォルトの認証情報プロバイダーが使用されます。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_CREDENTIALS_PROVIDER_BEAN_NAME

string

 

quarkus.tls."tls-bucket-name".key-store.credentials-provider.password-key

キーストアのパスワードを取得するために使用されるキー。

選択した認証情報プロバイダーがキーをサポートしていない場合、パスワードは取得されません。サポートしている場合、取得された値がキーストアを開くために使用されます。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_CREDENTIALS_PROVIDER_PASSWORD_KEY

string

password

quarkus.tls."tls-bucket-name".key-store.credentials-provider.alias-password-key

キーストアのエイリアスパスワードを取得するために使用されるキー。

選択した認証情報プロバイダーにキーが含まれていない場合、エイリアスパスワードは取得されません。含まれている場合、取得された値がキーストアからエイリアスの private key にアクセスするために使用されます。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_CREDENTIALS_PROVIDER_ALIAS_PASSWORD_KEY

string

alias-password

quarkus.tls."tls-bucket-name".trust-store.pem.certs

信頼済み証明書のパスのリスト (Pem フォーマット)。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_PEM_CERTS

list of path

 

quarkus.tls."tls-bucket-name".trust-store.p12.path

トラストストアファイルへのパス (P12/PFX フォーマット)。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_P12_PATH

path

必須 ⚠️ 必須

quarkus.tls."tls-bucket-name".trust-store.p12.password

トラストストアのパスワード。設定されていない場合、認証情報プロバイダーからパスワードを取得する必要があります。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_P12_PASSWORD

string

 

quarkus.tls."tls-bucket-name".trust-store.p12.alias

トラストストアのエイリアス。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_P12_ALIAS

string

 

quarkus.tls."tls-bucket-name".trust-store.p12.provider

トラストストアのプロバイダー。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_P12_PROVIDER

string

 

quarkus.tls."tls-bucket-name".trust-store.jks.path

トラストストアファイルへのパス (JKS フォーマット)。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_JKS_PATH

path

必須 ⚠️ 必須

quarkus.tls."tls-bucket-name".trust-store.jks.password

トラストストアのパスワード。設定されていない場合、認証情報プロバイダーからパスワードを取得する必要があります。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_JKS_PASSWORD

string

 

quarkus.tls."tls-bucket-name".trust-store.jks.alias

トラストストア内の鍵のエイリアス。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_JKS_ALIAS

string

 

quarkus.tls."tls-bucket-name".trust-store.jks.provider

トラストストアのプロバイダー。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_JKS_PROVIDER

string

 

quarkus.tls."tls-bucket-name".trust-store.credentials-provider.name

io.quarkus.credentials.CredentialsProvider から取得する "認証情報" バケットの名前 (マップキー → パスワード)。設定されていない場合、認証情報プロバイダーは使用されません。

認証情報プロバイダーは、キーストアのパスワードとエイリアスのパスワードを取得する方法として機能します。認証情報プロバイダーは、設定でパスワードが指定されていない場合にのみ使用されることに注意してください。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_CREDENTIALS_PROVIDER_NAME

string

 

quarkus.tls."tls-bucket-name".trust-store.credentials-provider.bean-name

認証情報プロバイダーを提供する Bean の名前。

この名前は、使用する認証情報プロバイダーを選択するために使用されます。認証情報プロバイダーは CDI Bean として公開されている必要があります。また、選択されるように設定された名前に @Named アノテーションが設定されている必要があります。

設定されていない場合、デフォルトの認証情報プロバイダーが使用されます。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_CREDENTIALS_PROVIDER_BEAN_NAME

string

 

quarkus.tls."tls-bucket-name".trust-store.credentials-provider.password-key

トラストストアのパスワードを取得するために使用されるキー。

選択した認証情報プロバイダーに設定されたキーが含まれていない場合、パスワードは取得されません。含まれている場合、取得された値がトラストストアを開くために使用されます。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_CREDENTIALS_PROVIDER_PASSWORD_KEY

string

password

quarkus.tls."tls-bucket-name".cipher-suites

有効な暗号スイートの順序付きリストを設定します。何も指定されていない場合、組み込みの暗号の中から適切なデフォルトが選択されます。

スイートが設定されている場合、使用中の SSLEngineOptions によって定義されているデフォルトのスイートよりも優先されます。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__CIPHER_SUITES

list of string

 

quarkus.tls."tls-bucket-name".protocols

有効な TLS プロトコルの順序付きリストを設定します。

設定されていない場合、デフォルトで "TLSv1.3, TLSv1.2" になります。サポートされているプロトコルのリストは、TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 です。TLSv1.3 のみを有効にするには、値を to "TLSv1.3" に設定します。

空のリストを設定して TLS を有効にすることは無効であることに注意してください。少なくとも 1 つのプロトコルが必要です。

また、このプロパティーを設定すると、デフォルトのプロトコルのリストが置き換えられます。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__PROTOCOLS

list of string

TLSv1.3,TLSv1.2

quarkus.tls."tls-bucket-name".handshake-timeout

TLS ハンドシェイクフェーズのタイムアウト。

設定されていない場合、デフォルトで 10 秒になります。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__HANDSHAKE_TIMEOUT

持続期間 の Kafka 期間の形式

10S

quarkus.tls."tls-bucket-name".alpn

Application-Layer Protocol Negotiation (ALPN) を有効にします。

Application-Layer Protocol Negotiation は、TLS ハンドシェイク中にクライアントとサーバーが通信に使用するプロトコルをネゴシエートできるようにする TLS エクステンションです。ALPN は、TLS 接続を確立する前にクライアントが優先するアプリケーションプロトコルをサーバーに指示できるようにすることで、より効率的な通信を可能にします。これは、複数のプロトコルが利用できる可能性がある HTTP/2 などのシナリオで役立ち、プロトコルの選択を高速化します。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__ALPN

boolean

true

quarkus.tls."tls-bucket-name".certificate-revocation-list

失効した証明書 (ファイルへのパス) のリストを設定します。

証明書失効リスト (CRL) は、予定の有効期限より前に発行元の認証局 (CA) によって失効させられたデジタル証明書のリストです。証明書が侵害されたり、不要になったり、何らかの理由で無効と判断されたりした場合、CA は証明書を CRL に追加して、その証明書を信頼しないよう証明書利用者に通知します。

許可されるフォーマットは DER と PKCS#7 (P7B とも呼ばれます) の 2 つです。DER フォーマットを使用する場合は、DER でエンコードされた CRL を渡す必要があります。PKCS#7 フォーマットを使用する場合、PKCS#7 SignedData オブジェクトを渡す必要があります。この場合、重要なフィールドは crls だけです。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__CERTIFICATE_REVOCATION_LIST

list of path

 

quarkus.tls."tls-bucket-name".trust-all

true に設定すると、サーバーがすべての証明書を信頼します。

これはテストには便利ですが、実稼働環境では使用しないでください。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_ALL

boolean

false

quarkus.tls."tls-bucket-name".hostname-verification-algorithm

サーバーのアイデンティティーをチェックする必要がある場合に使用するホスト名検証アルゴリズム。HTTPS (デフォルト)、LDAPS、または NONE にする必要があります。

NONE に設定すると、ホスト名は検証されません。

設定されていない場合、設定されたエクステンションによって、使用するデフォルトのアルゴリズムが決定されます。たとえば、HTTP の場合は "HTTPS" になります。TCP の場合はプロトコルによって異なります。ただし、"HTTPS" または "LDAPS" に設定することを推奨します。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__HOSTNAME_VERIFICATION_ALGORITHM

string

 

quarkus.tls."tls-bucket-name".reload-period

設定すると、サーバーが証明書を (たとえばファイルシステムから) 再読み込みし、再読み込みが成功した場合は CertificateUpdatedEvent を発行します。

このプロパティーは、証明書を再読み込みする期間を設定します。設定されていない場合、証明書は自動的に再読み込みされません。ただし、その場合もアプリケーションは io.quarkus.tls.TlsConfiguration#reload() メソッドを使用して手動で再読み込みをトリガーし、CertificateUpdatedEvent を手動で起動することができます。

起動されたイベントは、証明書が更新されたことをアプリケーションに通知し、実際の証明書の切り替えを続行するために使用されます。

環境変数: QUARKUS_TLS__TLS_BUCKET_NAME__RELOAD_PERIOD

持続期間 の Kafka 期間の形式

 
duration のフォーマット

duration の値を書き込むには、標準の java.time.Duration フォーマットを使用します。詳細は、Duration#parse() Java API ドキュメント を参照してください。

数字で始まる簡略化されたフォーマットも使用できます。

  • 値が数値のみの場合は、秒単位の時間を表します。
  • 数字の後に ms が続く値は、ミリ秒単位の時間を表します。

その他の場合は、解析のために簡略化されたフォーマットが java.time.Duration フォーマットに変換されます。

  • 数字の後に hm、または s が続く値には、接頭辞 PT が付きます。
  • 数字の後に d が続く値は、接頭辞 P が付きます。

1.4. レジストリー API

エクステンションは自動的に TLS レジストリーを使用します。一方、ユーザーはレジストリー API を介してプログラムで TLS 設定にアクセスすることもできます。

TLS 設定にアクセスするには、TlsConfigurationRegistry Bean を注入します。get ("<NAME>") を呼び出すことで名前付き TLS 設定を取得できます。また、getDefault() を呼び出すことでデフォルトの設定を取得できます。

 @Inject
 TlsConfigurationRegistry certificates;
// ...
TlsConfiguration def = certificates.getDefault().orElseThrow();
TlsConfiguration named = certificates.get("name").orElseThrow();
//...
Copy to Clipboard Toggle word wrap

TlsConfiguration オブジェクトには、キーストア、トラストストア、暗号スイート、プロトコル、およびその他のプロパティーが含まれています。また、このオブジェクトは設定から SSLContext を作成する方法を提供します。

また、TlsConfiguration オブジェクトを使用して、KeyCertOptionsTrustOptions などの Vert.x クライアントまたはサーバーを設定することもできます。

1.5. エクステンションからの証明書の登録

このセクションはエクステンション開発者専用です。エクステンションは、TLS レジストリーに証明書を登録できます。これは、エクステンションがアプリケーションに証明書を提供する必要がある場合、または異なるフォーマットを提供する場合に便利です。

エクステンションを使用して TLS レジストリーに証明書を登録するには、プロセッサー エクステンションで、名前と CertificateSupplier (証明書サプライヤー) で構成される TlsCertificateBuildItem を生成する必要があります。

TlsCertificateBuildItem item = new TlsCertificateBuildItem("named",
    new MyCertificateSupplier());
Copy to Clipboard Toggle word wrap

証明書サプライヤーは、通常、レコーダーメソッドを使用して取得されるランタイムオブジェクトです。

証明書サプライヤーの例:

public class MyCertificateSupplier implements Supplier<TlsConfiguration> {

        @Override
        public TlsConfiguration get() {
            try {
                KeyStore ks = KeyStore.getInstance("PKCS12");
                ks.load(getClass().getResourceAsStream("target/certs/test-registration-keystore.p12"),
                        "password".toCharArray());
                KeyStore ts = KeyStore.getInstance("PKCS12");
                ts.load(getClass().getResourceAsStream("target/certs/test-registration-truststore.p12"),
                        "password".toCharArray());
                return new BaseTlsConfiguration() {
                    @Override
                    public KeyStore getKeyStore() {
                        return ks;
                    }

                    @Override
                    public KeyStore getTrustStore() {
                        return ts;
                    }
                };
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    }
Copy to Clipboard Toggle word wrap

1.6. 起動時チェック

TLS エクステンションを使用するアプリケーションが起動すると、TLS レジストリーは、設定が正しいことを確認するために、以下に示すいくつかのチェックを実行します。

  • キーストアとトラストストアにアクセスできる。
  • エイリアスがキーストアとトラストストアで使用可能であり、アクセスできる。
  • 証明書が有効である。
  • 暗号スイートとプロトコルが有効である。
  • 証明書失効リスト (CRL) が有効である。

これらのチェックのいずれかが失敗すると、アプリケーションは起動しません。

1.7. 証明書の再読み込み

TLSConfigurationRegistry から取得された TlsConfiguration には、証明書を再読み込みするためのメカニズムが含まれています。reload メソッドは、通常、ファイルシステムからキーストアとトラストストアを再読み込みして更新します。

注記

再読み込み操作は自動ではなく、手動で実行する必要があります。さらに、TlsConfiguration 実装が再読み込みをサポートしている必要があります (証明書が設定されている場合)。

reload メソッドは、再読み込みが成功したかどうかを示す boolean を返します。true の値は、再読み込み操作が成功したことを意味し、必ずしも証明書が更新されたことを意味するわけではありません。

TlsConfiguration が再読み込みされた後、この設定を使用するサーバーとクライアントが、新しい証明書を適用するために特定の操作を実行する必要がある場合があります。

証明書の再読み込みについてクライアントとサーバーに通知する方法としては、io.quarkus.tls.CertificateUpdatedEvent タイプの CDI イベントを起動する方法が推奨されます。これを行うには、このタイプの CDI イベントを注入し、再読み込みが発生したときにそれを起動します。

  1. 手動で再読み込みをトリガーし、CertificateUpdatedEvent を起動します。
// in the class that performs the reload
@Inject
Event<CertificateUpdatedEvent> event;
@Inject
TlsConfigurationRegistry registry;

public void reload() {
    TlsConfiguration config = registry.get("name").orElseThrow();
    if (config.reload()) {
        event.fire(new CertificateUpdatedEvent("name", config));
    }
}

// In the server or client code
public void onReload(@Observes CertificateUpdatedEvent reload) {
    if ("name".equals(event.getName())) {
        server.updateSSLOptions(reload.tlsConfiguration().getSSLOptions());
        // Or update the SSLContext.
    }

}
Copy to Clipboard Toggle word wrap

1.7.1. 定期的な再読み込み

TLS レジストリーには、ファイルシステムの変更を定期的にチェックし、証明書を再読み込みするためのメカニズムが組み込まれています。reload-period プロパティーは、証明書を再読み込みする間隔を指定し、証明書が再読み込みされるたびに CertificateUpdatedEvent を発行します。

  1. 定期的な証明書の再読み込みを設定するには、次のように指定します。

    quarkus.tls.reload-period=1h
    quarkus.tls.key-store.pem.0.cert=tls.crt
    quarkus.tls.key-store.pem.0.key=tls.key
    Copy to Clipboard Toggle word wrap
  2. 名前付き設定ごとに、特定の再読み込み期間を設定できます。

    quarkus.tls.http.reload-period=30min
    quarkus.tls.http.key-store.pem.0.cert=tls.crt
    quarkus.tls.http.key-store.pem.0.key=tls.key
    Copy to Clipboard Toggle word wrap
重要

影響を受けるサーバーおよびクライアントが、新しい証明書を適用するために CertificateUpdatedEvent を待ち受ける必要がある場合があります。これは、管理インターフェイスが有効な場合はそれも含めて、Quarkus HTTP サーバーに対して自動的に実行されます。

1.8. OpenShift 提供証明書の使用

OpenShift でアプリケーションを実行する場合、OpenShift 提供証明書 を使用して TLS 証明書を自動的に生成および更新できます。Quarkus TLS レジストリーは、この証明書と認証局 (CA) ファイルを使用して、HTTPS トラフィックを処理し、証明書をセキュアに検証できます。

1.8.1. 証明書の取得

OpenShift で提供証明書を生成するには、既存の Service オブジェクトにアノテーションを付けます。生成された証明書はシークレットに保存され、Pod にマウントできるようになります。

次のスニペットでは、TLS 証明書を生成するためのアノテーションが付いたサンプルの Service オブジェクトを使用しています。

  1. Service オブジェクトの設定を表示します。

    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app.kubernetes.io/name: ...
        app.kubernetes.io/version: ...
        app.kubernetes.io/managed-by: quarkus
      name: hero-service
    spec:
      ports:
        - name: http
          port: 443
          protocol: TCP
          targetPort: 8443
      selector:
        app.kubernetes.io/name: ...
        app.kubernetes.io/version: ...
      type: ClusterIP
    Copy to Clipboard Toggle word wrap
  2. 証明書を生成するには、すでに作成されている OpenShift service に次のアノテーションを追加します。

    oc annotate service hero-service \
         service.beta.openshift.io/serving-cert-secret-name=my-tls-secret
    Copy to Clipboard Toggle word wrap

    アノテーション service.beta.openshift.io/serving-cert-secret-name は、証明書を生成し、それを my-tls-secret という名前のシークレットに保存するよう OpenShift に指示します。

  3. Deployment 設定を更新して、シークレットを Pod 内のボリュームとしてマウントします。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app.kubernetes.io/name: ...
        app.kubernetes.io/version: ...
      name: my-service
    spec:
      replicas: 1
      selector:
        matchLabels:
          app.kubernetes.io/name: ...
          app.kubernetes.io/version: ...
      template:
        metadata:
          labels:
            app.kubernetes.io/name: ...
            app.kubernetes.io/version: ...
        spec:
          volumes:
            - name: my-tls-secret  
    1
    
              secret:
                secretName: my-tls-secret
          containers:
            - env:
                - name: KUBERNETES_NAMESPACE
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.namespace
                - name: QUARKUS_TLS_KEY_STORE_PEM_ACME_CERT 
    2
    
                  value: /etc/tls/tls.crt
                - name: QUARKUS_TLS_KEY_STORE_PEM_ACME_KEY
                  value: /etc/tls/tls.key
              image: ...
              imagePullPolicy: Always
              name: my-service
              volumeMounts:  
    3
    
                - name: my-tls-secret
                  mountPath: /etc/tls
                  readOnly: true
              ports:
                - containerPort: 8443  
    4
    
                  name: https
                  protocol: TCP
    Copy to Clipboard Toggle word wrap
    1
    シークレットをマウントするボリュームを定義します。上記で宣言したシークレットと同じ名前を使用します。
    2
    証明書と秘密鍵へのパスを使用してキーストアを設定します。これは、環境変数または設定ファイルを使用して設定できます。この例では環境変数を使用します。OpenShift 提供証明書は常に tls.crt ファイルと tls.key ファイルを作成します。
    3
    コンテナーにシークレットをマウントします。パスが設定で使用されているパス (ここでは /etc/tls) と一致していることを確認します。
    4
    HTTPS を提供するポートを設定します。
  4. OpenShift によって生成された証明書を使用するようにアプリケーションをデプロイします。これにより、HTTPS 経由でサービスが利用できるようになります。
注記

quarkus.tls.key-store.pem.acme.cert および quarkus.tls.key-store.pem.acme.key 変数またはその環境変数バリアントを設定すると、TLS レジストリーがシークレットからの証明書と秘密鍵を使用します。

これにより、Quarkus HTTP サーバーのデフォルトのキーストアが設定され、サーバーが証明書を使用できるようになります。名前付き設定でこの証明書を使用する方法は、TLS 設定の参照 を参照してください。

1.8.2. 認証局 (CA) を信頼する

前提条件

サービスが OpenShift によって発行された証明書を使用するようになったら、この証明書を信頼するようにクライアントアプリケーションを設定します。これを行うには、CA 証明書を保持する ConfigMap を作成し、それをマウントするように Pod を設定します。次の手順では、Quarkus REST クライアントを例として使用しますが、どのクライアントでも同じ方法が使用されます。

  1. まず、CA 証明書を入力する の ConfigMap を定義します。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: client-tls-config
      annotations:
        service.beta.openshift.io/inject-cabundle: "true"
    Copy to Clipboard Toggle word wrap

    service.beta.openshift.io/inject-cabundle アノテーションは、CA 証明書を ConfigMap に注入するために使用されます。この ConfigMap は、最初はデータがなく、空であることに注意してください。処理中に、OpenShift によって CA 証明書が service-ca.crt ファイルの ConfigMap に注入されます。

  2. ボリュームを追加して Deployment 設定にマウントすることで、ConfigMap をマウントします。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-service-client
      labels:
        app.kubernetes.io/name: ...
        app.kubernetes.io/version: ...
    spec:
      replicas: 1
      selector:
        matchLabels:
          app.kubernetes.io/name: ...
          app.kubernetes.io/version: ...
      template:
        metadata:
          labels:
            app.kubernetes.io/name: ...
            app.kubernetes.io/version: ...
        spec:
          containers:
            - name: my-service-client
              image: ...
              ports:
                - name: http
                  containerPort: 8080
                  protocol: TCP
              volumeMounts: 
    1
    
                - name: my-client-volume
                  mountPath: /deployments/tls
          volumes: 
    2
    
            - name: my-client-volume
              configMap:
                name: client-tls-config
    Copy to Clipboard Toggle word wrap
    1
    ConfigMap をコンテナーにマウントします。パスが設定で使用されているパスと一致していることを確認します (この例では /deployments/tls)。
    2
    ConfigMap をマウントし、CA 証明書を受け取る ConfigMap を参照するためのボリュームを定義します。
  3. この CA 証明書を使用するように REST クライアントを設定します。

    次のような REST クライアントインターフェイスがあるとします。

    package org.acme;
    
    import jakarta.ws.rs.GET;
    import jakarta.ws.rs.Path;
    import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
    
    @RegisterRestClient(baseUri = "https://hero-service.cescoffi-dev.svc", configKey = "hero") 
    1
    
    public interface HeroClient {
    
        record Hero (Long id, String name, String otherName, int level, String picture, String powers) {
        }
    
        @GET
        @Path("/api/heroes/random")
        Hero getRandomHero();
    
    }
    Copy to Clipboard Toggle word wrap
    1
    ベース URI と設定鍵を設定します。名前は <service-name>.<namespace>.svc というフォーマットにする必要があります。そうしないと、証明書が信頼されません。configKey も設定されていることを確認してください。
  4. OpenShift によって生成された CA 証明書を信頼するように REST クライアントを設定します。

    quarkus.rest-client.hero.tls-configuration-name=my-service-tls 
    1
    
    quarkus.tls.my-service-tls.trust-store.pem.certs=/deployments/tls/service-ca.crt 
    2
    Copy to Clipboard Toggle word wrap
    1
    my-service-tls という名前の TLS 設定を使用して、hero REST クライアントを設定します。
    2
    my-service-tls TLS 設定、具体的には CA 証明書を含むトラストストアを設定します。パスが Kubernetes Deployment 設定で使用されているパスと一致していることを確認します。ファイル名は常に service-ca.crt です。

1.8.3. 証明書の更新

OpenShift は生成した提供証明書を自動的に更新します。証明書が更新されると、シークレットが新しい証明書と秘密鍵で更新されます。

アプリケーションが新しい証明書を使用するようにするには、Quarkus TLS レジストリーの定期的な再読み込み機能を使用できます。

reload-period プロパティーを設定すると、TLS レジストリーはキーストアとトラストストアの変更を定期的にチェックし、必要に応じて再読み込みします。

quarkus.tls.reload-period=24h
Copy to Clipboard Toggle word wrap
  1. 必要に応じて、シークレットが更新されたときに証明書を再読み込みするカスタムメカニズムを実装します。詳細は、証明書の再読み込み を参照してください。

1.9. Quarkus CLI コマンドと開発用認証局

TLS レジストリーは、開発用認証局 (CA) と信頼済み証明書を生成するための Quarkus CLI コマンドを備えています。これにより、自己署名証明書をローカルで使用する必要がなくなります。

次のスニペットは、2 つのサブコマンドを含む quarkus tls コマンドの説明を示しています。

> quarkus tls
Install and Manage TLS development certificates
Usage: tls [COMMAND]
Commands:
  generate-quarkus-ca   Generate Quarkus Dev CA certificate and private key. 
1

  generate-certificate  Generate a TLS certificate with the Quarkus Dev CA if
                        available. 
2
Copy to Clipboard Toggle word wrap
1
これは、Quarkus が独自の認証局として機能し、他の証明書に署名するために使用できるため、ローカル開発に便利です。
2
これは、開発中にアプリケーションと外部サービスまたはクライアント間でセキュアな通信を確立するための証明書を作成するときに便利です。

ほとんどの場合、Quarkus 開発用 CA を一度生成してから、この CA によって署名された証明書を生成します。Quarkus 開発用 CA は、ローカルで証明書に署名するために使用できる認証局です。この CA は開発を目的とする場合にのみ有効であり、ローカルマシン上でのみ信頼されます。生成された CA は $HOME/.quarkus/quarkus-dev-root-ca.pem に配置され、システムのトラストストアにインストールされます。

1.9.1. 自己署名証明書と CA 署名証明書の違いについて

TLS を使用して開発する場合、次の 2 種類の証明書を使用できます。

  • 自己署名証明書: この証明書は、それを使用する同じエンティティーによって署名されたものです。デフォルトでは信頼されません。このタイプの証明書は、通常、認証局 (CA) が利用できない場合や、簡単なセットアップが必要な場合に使用されます。実稼働環境には適しておらず、開発目的でのみ使用する必要があります。
  • CA 署名証明書: この証明書は、信頼できるエンティティーである証明書 CA によって署名されたものです。この証明書はデフォルトで信頼されており、実稼働環境での標準的な選択肢です。

ローカル開発には自己署名証明書を使用できますが、制限があります。curlwgethttpie などのブラウザーやツールは通常、自己署名証明書を信頼しないため、OS に CA を手動でインポートする必要があります。

この問題を回避するには、開発用 CA を使用して証明書に署名し、その CA をシステムのトラストストアにインストールします。これにより、システムが CA によって署名されたすべての証明書を信頼するようになります。

Quarkus は、開発用 CA とこの CA によって署名される証明書の生成を簡素化します。

1.9.2. 開発用 CA の生成

開発用 CA は、ローカルで証明書に署名するために使用できる認証局です。生成された CA は開発を目的とする場合にのみ有効であり、ローカルマシン上でのみ信頼されることに注意してください。

開発用 CA を生成するには、次のように指定します。

quarkus tls generate-quarkus-ca --install \   
1

     --renew \     
2

     --truststore  
3
Copy to Clipboard Toggle word wrap
1
--install は、CA をシステムのトラストストアにインストールします。Windows、Mac、Linux (Fedora および Ubuntu) がサポートされています。ただし、ブラウザーによっては、生成された CA を手動でインポートする必要がある場合があります。詳細は、ブラウザーのドキュメントを参照してください。生成された CA は $HOME/.quarkus/quarkus-dev-root-ca.pem に配置されます。
2
--renew は、CA がすでに存在する場合に CA を更新します。このオプションを使用すると、秘密鍵が変更されます。そのため、CA によって署名された証明書を再生成する必要があります。CA の有効期限が切れた場合は、自動的に更新されます。--renew オプションは必要ありません。
3
--truststore は、CA 証明書を含む PKCS12 トラストストアも生成します。
警告

証明書をインストールするときに、システムのトラストストアに証明書をインストールするためのパスワードの入力を求められたり、Windows のダイアログで確認を求められたりすることがあります。

重要

Windows では、管理者権限を持つターミナルから管理者として実行し、システムのトラストストアに CA をインストールしてください。

1.9.3. 信頼済み (署名済み) 証明書の生成

前提条件

  • 開発用 CA の生成

    1. Quarkus 開発用 CA をインストールしたら、信頼済み証明書を生成します。この証明書は Quarkus 開発用 CA によって署名され、システムによって信頼されます。

      quarkus tls generate-certificate --name my-cert
      Copy to Clipboard Toggle word wrap

      このコマンドは、Quarkus 開発用 CA によって署名された証明書を生成します。開発用 CA は、適切にインストールまたはインポートされた場合にシステムによって信頼されます。

      証明書は ./.certs/ に保存されます。次の 2 つのファイルが生成されます。

  • $NAME-keystore.p12: 秘密鍵と証明書が含まれています。パスワードで保護されています。
  • $NAME-truststore.p12: テスト用などにトラストストアとして使用できる CA 証明書が含まれています。

    以下に示すその他のオプションも利用できます。

    Usage: tls generate-certificate [-hrV] [-c=<cn>] [-d=<directory>]
           -n=<name> [-p=<password>]
    Generate a TLS certificate with the Quarkus Dev CA if available.
      -c, --cn=<cn>       The common name of the certificate. Default is 'localhost'
      -d, --directory=<directory>
                          The directory in which the certificates will be created.
                            Default is `.certs`
      -n, --name=<name>   Name of the certificate. It will be used as file name and
                            alias in the keystore
      -p, --password=<password>
                          The password of the keystore. Default is 'password'
      -r, --renew         Whether existing certificates will need to be replaced
    Copy to Clipboard Toggle word wrap

    証明書を生成するときに .env ファイルも生成されます。これにより、Quarkus 開発モードがこれらの証明書を認識するようになります。

    1. アプリケーションを開発モードで実行して、これらの証明書を使用します。

      ./mvnw quarkus:dev
      ...
      INFO  [io.quarkus] (Quarkus Main Thread) demo 1.0.0-SNAPSHOT on JVM (powered by Quarkus 999-SNAPSHOT) started in 1.286s. Listening on: http://localhost:8080 and https://localhost:8443
      Copy to Clipboard Toggle word wrap
    2. HTTPS (https://localhost:8443/q/dev) を使用するか、curl リクエストを発行して Dev UI を開きます。

      curl https://localhost:8443/hello
      Hello from Quarkus REST%
      Copy to Clipboard Toggle word wrap
      重要

      Quarkus 開発用 CA がインストールされていない場合、Quarkus は自己署名証明書を生成します。

1.9.4. 自己署名証明書の生成

Quarkus 開発用 CA がインストールされている場合でも、自己署名証明書を生成できます。

quarkus tls generate-certificate --name my-cert --self-signed
Copy to Clipboard Toggle word wrap

これにより、Quarkus 開発用 CA によって署名されない自己署名証明書が生成されます。

1.9.5. Quarkus 開発用 CA のアンインストール

システムから Quarkus 開発用 CA をアンインストールする方法は、OS によって異なります。

1.9.5.1. Windows で CA 証明書を削除する
  1. 管理者権限で Powershell ターミナルを使用して、Windows 上の CA 証明書をリスト表示します。

    # First, we need to identify the serial number of the CA certificate
    > certutil -store -user Root
    root "Trusted Root Certification Authorities"
    ================ Certificate 0 ================
    Serial Number: 019036d564c8
    Issuer: O=Quarkus, CN=quarkus-dev-root-ca # <-That's the CA, copy the Serial Number (the line above)
    NotBefore: 6/19/2024 11:07 AM
    NotAfter: 6/20/2025 11:07 AM
    Subject: C=Cloud, S=world, L=home, OU=Quarkus Dev, O=Quarkus Dev, CN=quarkus-dev-root-ca
    Signature matches Public Key
    Non-root Certificate uses same Public Key as Issuer
    Cert Hash(sha1): 3679bc95b613a2112a3d3256fe8321b6eccce720
    No key provider information
    Cannot find the certificate and private key for decryption.
    CertUtil: -store command completed successfully.
    Copy to Clipboard Toggle word wrap
  2. 保存されている CA 証明書を削除します。$Serial_Number を CA 証明書のシリアル番号に置き換えます。

    > certutil -delstore -user -v Root $Serial_Number
    Copy to Clipboard Toggle word wrap
1.9.5.2. Linux で CA 証明書を削除する
  • Fedora の場合:

    sudo rm /etc/pki/ca-trust/source/anchors/quarkus-dev-root-ca.pem
    sudo update-ca-trust
    Copy to Clipboard Toggle word wrap
  • Ubuntu の場合:

    sudo rm /usr/local/share/ca-certificates/quarkus-dev-root-ca.pem
    sudo update-ca-certificates
    Copy to Clipboard Toggle word wrap
1.9.5.3. Mac で CA 証明書を削除する
  • Mac の場合:

    sudo security -v remove-trusted-cert -d /Users/clement/.quarkus/quarkus-dev-root-ca.pem
    Copy to Clipboard Toggle word wrap

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る