相互 TLS (mTLS)
概要
InterSystems IRIS では、インスタンスと InterSystems Web ゲートウェイ間の認証に相互 TLS (mTLS) をサポートしています。相互 TLS (双方向 TLS またはクライアント認証 TLS とも呼ばれます) は、ネットワーク通信の認証プロセスを強化するセキュリティ・プロトコルです。デジタル証明書を使用してクライアントとサーバ (InterSystems IRIS の場合、これはそれぞれ Web ゲートウェイと InterSystems IRIS インスタンスです) 両方の ID を検証することで、クライアントとサーバの間に安全な接続を確立します。相互 TLS は標準的な TLS ハンドシェイク・プロセスに従いますが、クライアント認証用の追加の手順があります。クライアントが接続を開始し、サーバが証明書で応答すると、サーバは相互認証用にクライアントの証明書を要求します。クライアントは証明書をサーバに送信し、両者は終了メッセージを交換して、ハンドシェイクの完了を確認します。サーバとクライアントの証明書はどちらも、信頼された認証局 (CA) によって署名されている必要があります。
前提条件
InterSystems IRIS で相互 TLS を有効にするには、いくつかの前提条件があります。開始する前に、以下が存在することを確認してください。
-
InterSystems IRIS と通信できる Web ゲートウェイ。Web ゲートウェイの設定方法の詳細は、"概要 : システムの Web ゲートウェイの設定" を参照してください。
-
信頼された CA 証明書。
-
InterSystems IRIS スーパーサーバの証明書と秘密鍵。スーパーサーバの詳細は、"スーパーサーバの管理" を参照してください。
必要な証明書を収集して Web サーバをインストールしたら、スーパーサーバの SSL/TLS 定義を構成する必要があります。これを行う方法の詳細は、"TLS の構成" を参照してください。[クライアント証明書の検証] が [リクエスト] または [必要] に設定されていることを確認します。その後、この TLS 定義を使用するようにスーパーサーバを構成します。このスーパーサーバのポートを書き留めます。
ここまでで、Web ゲートウェイが設定され、クライアント証明書検証付きの TLS を使用するようにスーパーサーバが構成されているはずです。
設定
Web サーバをインストールし、クライアント証明書検証付きの TLS を使用するようにスーパーサーバを構成したら、以下の手順に従って、Web ゲートウェイの mTLS 認証を設定します。
-
%Service_WebGateway で mTLS 認証をオンにします。このサービスの詳細は、"サービス" を参照してください。
-
任意の方法を使用して、Web ゲートウェイの新しい証明書を生成します。CN (一般名) フィールドは、既存の InterSystems IRIS ユーザの名前です。信頼された CA に、この証明書に署名してもらいます。
-
この証明書を使用するように Web ゲートウェイを構成します。
-
Web ゲートウェイ管理ページに対して認証します。詳細は、"Web ゲートウェイ管理ページへのアクセス" を参照してください。
-
[構成] で [サーバ接続] に移動し、サーバ構成プロファイルを編集または作成します。
-
[スーパーサーバの TCP ポート] フィールドが、先ほど TLS を使用するように構成したスーパーサーバのポートと一致することを確認します。
-
[接続セキュリティ] で、[接続セキュリティレベル] を [SSL/TLS] に設定します。
-
[ユーザ名] と [パスワード] の既存の値をクリアします。これらの値は、相互 TLS よりも優先されます。
-
[SSL 証明書ファイル] フィールドに、手順 2 で生成した Web ゲートウェイ証明書へのパスを入力します。
-
[SSL 証明書キーファイル] フィールドに、手順 2 で生成した Web ゲートウェイの秘密鍵へのパスを入力します。
-
[SSL CA 証明書ファイル] フィールドに、スーパーサーバ証明書に署名した CA 証明書へのパスを入力し、Web ゲートウェイがスーパーサーバの証明書を検証できるようにします。
-
該当する場合は、[SSL/TLS 秘密鍵パスワード] フィールドに、Web ゲートウェイの秘密鍵パスワードを入力します。
-
構成を保存します。
-
Web ゲートウェイのサーバ・アクセス設定の、[ユーザ名] と [パスワード] の既存の値を必ずクリアしてください。これらの値は、相互 TLSよりも優先されます。
ここまでで、%Service_WebGateway で mTLS 認証が有効化され、CA 署名証明書付きの TLS を使用するように Web ゲートウェイが構成されているはずです (CN フィールドは、既存の InterSystems IRIS ユーザの名前です)。
テスト
設定が完了したら、Web ゲートウェイを使用して相互 TLS 認証が成功するかどうかをテストできます。認証をテストするには、以下の手順に従います。
-
Web ゲートウェイ接続をすべて閉じます。
-
Web ゲートウェイ・ポータルから、[管理]→[システムステータス] に移動します。
-
サーバ接続をすべて閉じ、[更新] ボタンをクリックします。
-
-
サーバ接続をテストします。
-
Web ゲートウェイ・ポータルから、[管理]→[サーバ接続のテスト] に移動します。
-
設定中に相互 TLS に構成したサーバ・プロファイル名を選択します。
-
[接続] をクリックします。
-
サーバ接続に失敗した場合、監査データベースで %Service_WebGateway からの LoginFailure イベントを確認できます。Web ゲートウェイ証明書の CN フィールドが、既存の InterSystems IRIS ユーザのユーザ名と一致することを確認します。監査データベースにそのようなイベントがない場合、システムが LoginFailure イベントを監査していることを確認します。詳細は、"監査" を参照してください。
LoginFailure イベントに対して監査を有効にしているが、このイベントが表示されない場合は、Web ゲートウェイ管理ページの [イベント・ログ] に移動して、さらなるトラブルシューティングのためにログ・メッセージを確認します。SELinux が Enforcing モードになっている場合は、"SELinux に関する考慮事項" を参照してください。
SELinux に関する考慮事項
SELinux が Enforcing モードに設定されている場合、証明書の SELinux のコンテキストを正しく構成しなければ、スーパーサーバに接続するための相互 TLS 認証は失敗します。CA、スーパーサーバ、Web ゲートウェイ証明書および関連する秘密鍵のコンテキストと OS 権限が正しく設定されていることを確認する必要があります。
スーパーサーバ証明書のコンテキスト
スーパーサーバ証明書と信頼された CA 証明書が irisusr グループから読み取り可能であり、適切なコンテキストで構成されていることを確認します。<IRIS-install-dir>/mgr/ で生成された場合、ファイルは元の親ディレクトリのコンテキストを継承するため、これらには既に正しいコンテキストが含まれています。そうでない場合は、ファイルを <IRIS-install-dir>/mgr/ に移動して、Linux コマンド行インタフェースで以下のコマンドを実行します。
# restorecon -vF <IRIS-install-dir>/mgr/<superserver_certificate.cer>
# restorecon -vF <IRIS-install-dir>/mgr/<superserver_private.key>
# restorecon -vF <IRIS-install-dir>/mgr/<trusted_CA_certificate.cer>
restorecon コマンドは、ファイルのコンテキストを親ディレクトリのコンテキストにリストアします。スーパーサーバの TLS 構成に、これらのファイルの正しいパスが含まれていることを確認します。
Web ゲートウェイ証明書のコンテキスト
さらに、Web ゲートウェイの秘密鍵、証明書、およびスーパーサーバ CA 証明書が Web サーバ・ユーザまたはグループから読み取り可能であり、適切なコンテキストで構成されていることを確認する必要があります。適切なコンテキストを設定するには、まず Web ゲートウェイの秘密鍵、証明書、およびスーパーサーバ CA 証明書を /etc/ssl/certs/ ディレクトリに配置します。次に、Linux コマンド行インタフェースで以下のコマンドを実行します。
# restorecon -vF /etc/ssl/certs/<WebGateway_certificate.cer>
# restorecon -vF /etc/ssl/certs/<WebGateway_private.key>
# restorecon -vF /etc/ssl/certs/<superserver_CA_certificate.cer>
restorecon コマンドは、ファイルのコンテキストを親ディレクトリのコンテキストにリストアします。Web ゲートウェイのサーバ・アクセス・プロファイルに、これらのファイルの正しいパスが含まれていることを確認します。