第18章 Tomcat Connector のキーストアパスワードの暗号化
JBoss Web は Apache Tomcat に基づいています。
Tomcat で SSL を使用するにはセキュアなコネクタが必要です。これはキーストア / 信頼ストアのパスワードは Tomcat の
server.xml ファイルのコネクタ要素の属性として渡されないことを意味しています。
キーストア、信頼ストア、パスワードベースの暗号化に対応する JaasSecurityDomain に関する基礎を理解することが推奨されます。
サポート情報および関連手順については 13章セキュアリモートパスワードプロトコル と 17章データソースのパスワードの暗号化 を参照してください。
手順18.1 Tomcat Container のキーストアのパスワードの暗号化
コネクタ要素を追加します
$JBOSS_HOME/server/$PROFILE/deploy/jbossweb.sarのserver.xmlにコネクタ要素を追加します。<!-- SSL/TLS Connector with encrypted keystore password configuration --> <Connector port="8443" address="${jboss.bind.address}" maxThreads="100" minSpareThreads="5" maxSpareThreads="15" scheme="https" secure="true" clientAuth="true" sslProtocol="TLS" securityDomain="java:/jaas/encrypt-keystore-password" SSLImplementation="org.jboss.net.ssl.JBossImplementation" > </Connector>.JaasSecurityDomain MBean を設定します
$JBOSS_HOME/server/$PROFILE/deploy/security-service.xmlファイルの JaasSecurityDomain MBean を設定します。ファイルが存在していない場合は作成する必要があります。例のコードは、ファイルが存在していない場合の必要なコンテンツを説明しています。すでにsecurity-service.xmlがある場合は、ファイルに <mbean> 要素ブロックを追加します。<server> <mbean code="org.jboss.security.plugins.JaasSecurityDomain" name="jboss.security:service=PBESecurityDomain"> <constructor> <arg type="java.lang.String" value="encrypt-keystore-password"></arg> </constructor> <attribute name="KeyStoreURL">resource:localhost.keystore</attribute> <attribute name="KeyStorePass">{CLASS}org.jboss.security.plugins.FilePassword:${jboss.server.home.dir}/conf/keystore.password</attribute> <attribute name="Salt">welcometojboss</attribute> <attribute name="IterationCount">13</attribute> </mbean> </server>Salt と IterationCount は暗号化されたパスワードの強度を定義する変数であるため、表示されているものから変更できます。新しい値を記録し、暗号化されたパスワードを生成するときに使用するようにしてください。注記
Salt は 8 文字以上である必要があります。暗号化されたパスワードを生成します
<mbean> 設定はキーストアがjboss-as/server/$PROFILE/conf/localhost.keystoreファイルに保存されていることを指定します。<mbean> は暗号化されたパスワードファイルがjboss-as/server/$PROFILE/conf/keystore.passwordファイルに保存されていることも指定します。localhost.keystoreファイルを作成する必要があります。jboss-as/server/$PROFILE/confディレクトリで次のコマンドを実行します。[conf]$ java -cp $JBOSS_HOME/lib/jbosssx.jar \org.jboss.security.plugins.FilePassword welcometojboss 13 unit-tests-server keystore.password
このコマンドは jbosssx.jar をクラスパス (-cp) として FilePassword をセキュリティプラグインとして使用し、unit-tests-serverと設定されたパスワードを持つkeystore.passwordファイルを作成します。keystore.passwordファイルを作成するパーミッションがあるか確認するには、JaasSecurityDomain の <mbean> <attribute> 要素で設定された salt と iteration パラメータを提供します。/confディレクトリでこのコマンドを実行することで、keystore.passwordファイルがこのディレクトリに保存されます。Tomcat service MBean を更新します
$JBOSS_HOME/server/$PROFILE/deploy/jbossweb.sar/META-INFに移動します。jboss-beans.xmlを開き、次の <depends> タグをファイルの後方に追加します。<depends> タグを追加すると、Tomcat はjboss.security:service=PBESecurityDomainの後に開始しなければならないことを指定します。<!-- Transaction manager for unfinished transaction checking in the CachedConnectionValve --> <depends>jboss:service=TransactionManager</depends> <depends>jboss.security:service=PBESecurityDomain</depends> <!-- Inject the TomcatDeployer -->
例18.1 pkcs12 キーストアの JaasSecurityDomain の定義
手順18.1「Tomcat Container のキーストアのパスワードの暗号化」 に基づき、Tomcat Connector で参照された pkcs12 キーストアコンテナは次の例のようになります。
<mbean code="org.jboss.security.plugins.JaasSecurityDomain"
name="jboss.security:service=PBESecurityDomain">
<constructor>
<arg type="java.lang.String" value="encrypt-keystore-password"></arg>
</constructor>
<attribute name="KeyStoreType">pkcs12</attribute>
<attribute name="KeyStoreURL">resource:localhost.keystore</attribute>
<attribute name="KeyStorePass">{CLASS}org.jboss.security.plugins.FilePassword:${jboss.server.home.dir}/conf/keystore.password</attribute>
<attribute name="Salt">welcometojboss</attribute>
<attribute name="IterationCount">13</attribute>
</mbean>18.1. 中程度のセキュリティユースケース
ユーザーはキーストアパスワードの暗号化は望みませんが、それを (
server.xml の外に) 外在させるか事前定義された JaasSecurityDomain の使用を望みます。
手順18.2 事前定義された JaasSecurityDomain
jboss-service.xml を更新し、コネクタを追加します
$JBOSS_HOME/server/に移動し、次のコードブロックを$PROFILE/deploy/jbossweb.sar/META-INFjboss-service.xmlファイルに追加します。<mbean code="org.jboss.security.plugins.JaasSecurityDomain" name="jboss.security:service=SecurityDomain"> <constructor> <arg type="java.lang.String" value="jbosstest-ssl"></arg> </constructor> <attribute name="KeyStoreURL">resource:localhost.keystore</attribute> <attribute name="KeyStorePass">unit-tests-server</attribute> </mbean><depends> タグを Tomcat サービスに追加します
$JBOSS_HOME/server/$PROFILE/deploy/jbossweb.sarに移動します。server.xmlを開き、次の <depends> 要素をファイルの最後に追加します。<depends>jboss.security:service=SecurityDomain</depends> </mbean> </server>
*-service.xml ファイルの JaasSecurityDomain MBean を定義します
デプロイディレクトリのsecurity-service.xmlを例にあげます。<mbean code="org.jboss.security.plugins.JaasSecurityDomain" name="jboss.security:service=SecurityDomain"> <constructor> <arg type="java.lang.String" value="jbosstest-ssl"></arg> </constructor> <attribute name="KeyStoreURL">resource:localhost.keystore</attribute> <attribute name="KeyStorePass">unit-tests-server</attribute> </mbean>
注記
このエラーが発生した場合は、キーストアファイルは JBoss Enterprise Application Platform を実行しているユーザー ID により書き込み可能であることに注意してください。