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.12.0.fuse-7_12_0-00019-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 に設定する必要があります。
必要に応じて、enabledCipherSuites プロパティーを設定して、JMX TLS 接続に使用する特定の暗号スイートをリストできます。このプロパティーを設定すると、デフォルトの暗号スイートがオーバーライドされます。
Karaf コンテナーを再起動します。
新しい JMX SSL/TLS 設定を有効にするには、Karaf コンテナーを再起動する必要があります。
セキュアな JMX 接続のテスト
コマンドプロンプトを開き、現在の場所が Fuse インストールの
etc/ディレクトリーであることを確認します。cd <installDir>/jboss-fuse-7.11.1.fuse-7_11_1-00013-redhat-00003/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