5.2.3. 証明書ベースの認証の設定
Java Authentication and Authorization Service (JAAS) 証明書ログインモジュールは、Transport Layer Security(TLS) を使用するクライアントの認証および承認を処理します。モジュールを使用するには、双方向の Transport Layer Security (TLS) の使用と、独自の証明書でクライアントを設定する必要があります。認証は、JAAS 証明書ログインモジュールから直接ではなく、TLS ハンドシェイク中に実行されます。
証明書ログインモジュールのロールは、以下のとおりです。
- 許可されるユーザーのセットを制限します。関連するプロパティーファイルに明示的に一覧表示されるユーザーの 識別名 (DN) のみが認証の対象となります。
- グループの一覧を受信したユーザー ID に関連付けます。これにより、認証が容易になります。
- 受信クライアント証明書が必要です (デフォルトでは、TLS レイヤーは、クライアント証明書の存在をオプションとして扱うように設定されています)。
証明書ログインモジュールは、フラットテキストファイルのペアに証明書 DN のコレクションを保存します。このファイルは、ユーザー名とグループ ID のリストを各 DN に関連付けます。
証明書ログインモジュールは、org.apache.activemq.artemis.spi.core.security.jaas.TextFileCertificateLoginModule
クラスで実装されます。
5.2.3.1. 証明書ベースの認証を使用するブローカーの設定
以下の手順では、証明書ベースの認証を使用するようにブローカーを設定する方法を説明します。
前提条件
- 双方向 Transport Layer Security(TLS) を使用するようにブローカーを設定している。詳細は、「双方向 TLS の設定」 を参照してください。
手順
以前ブローカーキーストアにインポートされたユーザー証明書からサブジェクト 識別名 (DN) を取得します。
キーストアファイルから一時ファイルに証明書をエクスポートします。以下に例を示します。
keytool -export -file <file-name> -alias broker-localhost -keystore broker.ks -storepass <password>
エクスポートされた証明書の内容を出力します。
keytool -printcert -file <file-name>
出力は以下のようになります。
Owner: CN=localhost, OU=broker, O=Unknown, L=Unknown, ST=Unknown, C=Unknown Issuer: CN=localhost, OU=broker, O=Unknown, L=Unknown, ST=Unknown, C=Unknown Serial number: 4537c82e Valid from: Thu Oct 19 19:47:10 BST 2006 until: Wed Jan 17 18:47:10 GMT 2007 Certificate fingerprints: MD5: 3F:6C:0C:89:A8:80:29:CC:F5:2D:DA:5C:D7:3F:AB:37 SHA1: F0:79:0D:04:38:5A:46:CE:86:E1:8A:20:1F:7B:AB:3A:46:E4:34:5C
Owner
エントリーは Subject DN です。Subject DN の入力の使用形式はプラットフォームによって異なります。上記の文字列は、以下のように表現することもできます。Owner: `CN=localhost,\ OU=broker,\ O=Unknown,\ L=Unknown,\ ST=Unknown,\ C=Unknown`
証明書ベースの認証を設定します。
<broker-instance-dir>/etc/login.config
設定ファイルを開きます。証明書ログインモジュールを追加し、ユーザーとロールのプロパティーファイルを参照します。以下に例を示します。activemq { org.apache.activemq.artemis.spi.core.security.jaas.TextFileCertificateLoginModule debug=true org.apache.activemq.jaas.textfiledn.user="artemis-users.properties" org.apache.activemq.jaas.textfiledn.role="artemis-roles.properties"; };
org.apache.activemq.artemis.spi.core.security.jaas.TextFileCertificateLoginModule
- 実装クラス。
org.apache.activemq.jaas.textfiledn.user
- ログインモジュール実装のユーザーとパスワードのセットを定義するプロパティーファイルを指定します。
org.apache.activemq.jaas.textfiledn.role
- ユーザーをログインモジュール実装に定義されたロールにマップするプロパティーファイルを指定します。
<broker-instance-dir>/etc/artemis-users.properties
設定ファイルを開きます。ユーザーおよび対応する DN はこのファイルで定義されます。以下に例を示します。system=CN=system,O=Progress,C=US user=CN=humble user,O=Progress,C=US guest=CN=anon,O=Progress,C=DE
前述の設定に基づいて、
system
という名前のユーザーはCN=system,O=Progress,C=US
Subject DN にマッピングされます。<broker-instance-dir>/etc/artemis-roles.properties
設定ファイルを開きます。利用可能なロールと、それらのロールを保持しているユーザーは、このファイルで定義されています。以下に例を示します。admins=system users=system,user guests=guest
上記の設定では、
users
ロールに対して、複数のユーザーをコンマ区切りリストとして一覧表示します。以下に示すように、セキュリティードメインエイリアス (このインスタンスでは activemq) が
bootstrap.xml
で参照されていることを確認します。<jaas-security domain="activemq"/>