2.4. リモート JMX SSL の有効化
概要
Red Hat JBoss Fuse は、MBean を使用した Karaf コンテナーのリモート監視および管理を可能にする JMX ポートを提供します。ただし、デフォルトでは、JMX 接続を介して送信するクレデンシャルは暗号化されておらず、スヌーピングに対して脆弱です。JMX 接続を暗号化し、パスワードスヌーピングから保護するには、SSL で JMX を設定して JMX 通信を保護する必要があります。
SSL で JMX を設定するには、次の手順を実行します。
SSL アクセスで JMX を設定した後、接続をテストする必要があります。
SSL/TLS セキュリティーを有効にする予定がある場合は、Poodle 脆弱性 (CVE-2014-3566) に対して保護するために、SSLv3 プロトコルを明示的に無効にする必要があります。詳細は、Disabling SSLv3 in JBoss Fuse 6.x and JBoss A-MQ 6.x を参照してください。
Red Hat JBoss Fuse の実行中に SSL で JMX を設定した場合は、再起動する必要があります。
前提条件
以下を実行していない場合、実行する必要があります。
-
JAVA_HOME
環境変数を設定します。 admin
ロールでの Karaf ユーザーの設定InstallDir/etc/users.properties
ファイルを編集し、以下のエントリーを 1 行に追加します。admin=YourPassword,admin
これにより、ユーザー名
admin
、パスワードYourPassword
、およびadmin
ロールを持つ新規ユーザーが作成されます。
jbossweb.keystore ファイルを作成します
コマンドプロンプトを開き、現在の場所が Karaf インストールの etc/
ディレクトリーであることを確認します。
cd etc
コマンドラインで、アプリケーションに適した -dname
値 (識別名) を使用して、以下のコマンドを入力します。
$JAVA_HOME/bin/keytool -genkey -v -alias jbossalias -keyalg RSA -keysize 1024 -keystore jbossweb.keystore -validity 3650 -keypass JbossPassword -storepass JbossPassword -dname "CN=127.0.0.1, OU=RedHat Software Unit, O=RedHat, L=Boston, S=Mass, C=USA"
1 つのコマンドラインでコマンド全体を入力します。
このコマンドは、次のような出力を返します。
Generating 1,024 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 3,650 days for: CN=127.0.0.1, OU=RedHat Software Unit, O=RedHat, L=Boston, ST=Mass, C=USA New certificate (self-signed): [ [ Version: V3 Subject: CN=127.0.0.1, OU=RedHat Software Unit, O=RedHat, L=Boston, ST=Mass, C=USA Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11 Key: Sun RSA public key, 1024 bits modulus: 1123086025790567043604962990501918169461098372864273201795342440080393808 1594100776075008647459910991413806372800722947670166407814901754459100720279046 3944621813738177324031064260382659483193826177448762030437669318391072619867218 036972335210839062722456085328301058362052369248473659880488338711351959835357 public exponent: 65537 Validity: [From: Thu Jun 05 12:19:52 EDT 2014, To: Sun Jun 02 12:19:52 EDT 2024] Issuer: CN=127.0.0.1, OU=RedHat Software Unit, O=RedHat, L=Boston, ST=Mass, C=USA SerialNumber: [ 4666e4e6] Certificate Extensions: 1 [1]: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: AC 44 A5 F2 E6 2F B2 5A 5F 88 FE 69 60 B4 27 7D .D.../.Z_..i`.'. 0010: B9 81 23 9C ..#. ] ] ] Algorithm: [SHA256withRSA] Signature: 0000: 01 1D 95 C0 F2 03 B0 FD CF 3A 1A 14 F5 2E 04 E5 .........:...... 0010: DD 18 DD 0E 24 60 00 54 35 AE FE 36 7B 38 69 4C ....$`.T5..6.8iL 0020: 1E 85 0A AF AE 24 1B 40 62 C9 F4 E5 A9 02 CD D3 .....$.@b....... 0030: 91 57 60 F6 EF D6 A4 84 56 BA 5D 21 11 F7 EA 09 .W`.....V.]!.... 0040: 73 D5 6B 48 4A A9 09 93 8C 05 58 91 6C D0 53 81 s.kHJ.....X.l.S. 0050: 39 D8 29 59 73 C4 61 BE 99 13 12 89 00 1C F8 38 9.)Ys.a........8 0060: E2 BF D5 3C 87 F6 3F FA E1 75 69 DF 37 8E 37 B5 ...<..?..ui.7.7. 0070: B7 8D 10 CC 9E 70 E8 6D C2 1A 90 FF 3C 91 84 50 .....p.m....<..P ] [Storing jbossweb.keystore]
InstallDir/etc
にファイル jbossweb.keystore
が含まれるかどうかを確認します。
keystore.xml ファイルを作成してデプロイします
-
好みの XML エディターを使用して、
<installDir>/jboss-fuse-7.9.0.fuse-790071-redhat-00001/etc
ディレクトリーにkeystore.xml
ファイルを作成して保存します。 このテキストをファイルに含めます。
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:jaas="http://karaf.apache.org/xmlns/jaas/v1.0.0"> <jaas:keystore name="sample_keystore" rank="1" path="file:etc/jbossweb.keystore" keystorePassword="JbossPassword" keyPasswords="jbossalias=JbossPassword" /> </blueprint>
keystore.xml
ファイルをInstallDir/deploy
ディレクトリー (ホットデプロイディレクトリー) にコピーして、Karaf コンテナーにデプロイします。注記その後、
keystore.xml
ファイルをアンデプロイする必要がある場合は、Karaf コンテナーの実行中にdeploy/
ディレクトリーからkeystore.xml
ファイルを削除して実行できます。
必要なプロパティーを org.apache.karaf.management.cfg に追加します
InstallDir/etc/org.apache.karaf.management.cfg
ファイルを編集して、ファイルの最後に次のプロパティーを含めます。
secured = true secureProtocol = TLSv1 keyAlias = jbossalias keyStore = sample_keystore trustStore = sample_keystore
Poodle 脆弱性 (CVE-2014-3566) から保護するには、secureProtocol
を TLSv1
に設定する必要があります。
Karaf コンテナーを再起動します。
新しい JMX SSL/TLS 設定を有効にするには、Karaf コンテナーを再起動する必要があります。
セキュアな JMX 接続のテスト
コマンドプロンプトを開き、現在の場所が Fuse インストールの
etc/
ディレクトリーであることを確認します。cd <installDir>/jboss-fuse-7.6.0.fuse-760025-redhat-00001/etc
ターミナルを開き、次のコマンドを入力して JConsole を起動します。
jconsole -J-Djavax.net.debug=ssl -J-Djavax.net.ssl.trustStore=jbossweb.keystore -J-Djavax.net.ssl.trustStoreType=JKS -J-Djavax.net.ssl.trustStorePassword=JbossPassword
-J-Djavax.net.ssl.trustStore
オプションは、jbossweb.keystore
ファイルの場所を指定します (この場所を正しく指定しないと、SSL/TLS ハンドシェイクに失敗します)。-J-Djavax.net.debug=ssl
設定により SSL/TLS ハンドシェイクメッセージのロギングが有効になるため、SSL/TLS が正常に有効になっていることを確認できます。重要同じコマンドラインでコマンド全体を入力します。
-
JConsole が開いたら、
New Connection
ウィザードでRemote Process
オプションを選択します。 Remote Process
オプションで、service:jmx:<protocol>:<sap>
接続 URL に、次の値を入力します。service:jmx:rmi://localhost:44444/jndi/rmi://localhost:1099/karaf-root
(
etc/users.properties
ファイルに設定されているように)Username
およびPassword
フィールドに有効な JAAS 認証情報を入力します。Username: admin Password:
YourPassword