13.4. Tomcat Engine および Web サービスの設定ファイル

サブシステムのユーザーおよび管理 (管理者、エージェント、および監査者) サービスはすべて、Web プロトコルを介してアクセスされます。
本セクションでは、すべての Red Hat Certificate System サブシステム (CA、KRA、OCSP、TKS、および TPS) に適用される設定ファイルの 2 つの主要なセットを説明します。
  • /var/lib/pki/instance_name/conf/server.xml は、Tomcat エンジンの設定を提供します。
  • /usr/share/pki/subsystem_type/webapps/WEB-INF/web.xml は、このインスタンスが提供する Web サービスの設定を提供します。

13.4.1. Tomcatjss

注記
以降のサブセクションには、パラメーター値で必要な変更に関する重要な設定情報が含まれます。必ず厳密なコンプライアンスを確保してください。
サンプルの pki-tomcat/conf ディレクトリーにある server.xml ファイルの以下の設定は、Tomcatjss が Certificate System エコシステム全体にどのように適合するかを説明するために使用できます。シークレットポートの Connector エントリーの一部を以下に示します。
<Connector name="Secure"

# Info about the socket itself
port="8443"
protocol="org.apache.coyote.http11.Http11Protocol"
SSLEnabled="true"
sslProtocol="SSL"
scheme="https"
secure="true"
connectionTimeout="80000"
maxHttpHeaderSize="8192"
acceptCount="100" maxThreads="150" minSpareThreads="25"
enableLookups="false" disableUploadTimeout="true"
# Points to our tomcat jss implementation
sslImplementationName="org.apache.tomcat.util.net.jss.JSSImplementation"

# OCSP responder configuration can be enabled here
enableOCSP="true"
ocspCacheSize="1000"
ocspMinCacheEntryDuration="60"
ocspMaxCacheEntryDuration="120"
ocspTimeout="10"

# A collection of cipher related settings that make sure connections are secure.
strictCiphers="true"
# The "clientAuth" parameter configures the client authentication scheme
# for this server socket. If you set "clientAuth" to "want", the client
# authentication certificate is optional. Alternatively, set the
# parameter to "required" to configure that the certificate is is mandatory.
clientAuth="want"
sslVersionRangeStream="tls1_1:tls1_2"
sslVersionRangeDatagram="tls1_1:tls1_2"
sslRangeCiphers="+TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,+TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,+TLS_DHE_RSA_WITH_AES_128_CBC_SHA,+TLS_DHE_RSA_WITH_AES_256_CBC_SHA,+TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,+TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,+TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,+TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,+TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,+TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,+TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,+TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
serverCertNickFile="/var/lib/pki/pki-tomcat/conf/serverCertNick.conf"
passwordFile="/var/lib/pki/pki-tomcat/conf/password.conf"
passwordClass="org.apache.tomcat.util.net.jss.PlainPasswordFile"
certdbDir="/var/lib/pki/pki-tomcat/alias"

/>
Tomcat エンジンの server.xml 設定ファイルに、この Connector 設定要素として、この Connector オブジェクトの sslImplementation プロパティーにプラグインできる tomcatjss 実装へのポインターが含まれるこの Connector 設定要素があります。
各キーパラメーター要素は、以下のサブセクションで説明します。

13.4.1.1. TLS 暗号の設定

server.xml ファイルで設定した TLS 暗号は、Red Hat Certificate システムがクライアントおよびサーバーとして機能する際にシステム全体のデフォルトを提供します。これには、サーバーとして機能する場合 (たとえば、Tomcat から HTTPS 接続を提供する場合) およびクライアントとして機能する場合 (たとえば、LDAP サーバーと通信する場合または別の Certificate System インスタンスと通信する場合) が含まれます。
サーバーの TLS 暗号の設定は、Red Hat Certificate System インスタンス固有の /var/lib/pki/instance_name/conf/server.xml ファイルにあります。以下のパラメーターは、提供される暗号を制御します。
  • strictCipherstrueに設定すると、sslRangeCiphers+ 記号が付いた暗号のみが有効になります。
    strictCiphers="true"
    デフォルト値 (true) を変更しないでください。
  • sslVersionRangeStream および sslVersionRangeDatagram は、サーバーがサポートする TLS バージョンを設定します。パラメーターのデフォルト値は以下のとおりです。
    sslVersionRangeStream="tls1_1:tls1_2"
    sslVersionRangeDatagram="tls1_1:tls1_2"
    パラメーターのデフォルト値は変更しないでください。
  • sslRangeCiphers は、有効または無効にする暗号を設定します。+ 記号のある暗号は有効になり、- 記号のある暗号は有効になります。
    RSA 暗号を以下のように設定します。
    sslRangeCiphers="+TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,+TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,+TLS_DHE_RSA_WITH_AES_128_CBC_SHA,+TLS_DHE_RSA_WITH_AES_256_CBC_SHA,+TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,+TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,+TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,+TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,+TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,+TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,+TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,+TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
    EC 暗号を以下のように設定します。
    sslRangeCiphers="+TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,+TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,+TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,+TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,+TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,+TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,+TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
    許可される暗号の一覧は、「TLS、ECC、および RSA」 を参照してください。
  • RSA で FIPS モードが有効になっているシステムに LunaSA または nCipher の Hardware Security Module (HSM) のいずれかを使用した Certificate System をインストールする場合は、FIPS モードの HSM ではサポートされていないため、以下の暗号を無効にします。
    • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
    • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
    • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
    • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
13.4.1.1.1. クライアント TLS 暗号の設定
Red Hat Certificate System は、別の CS システムへのクライアントとして動作している場合にシステムでの暗号化設定を可能にします。
リストの暗号はコンマで区切ります。
CA で (KRA と CA の通信用) 、以下を行います。
ca.connector.KRA.clientCiphers=your selected cipher list
以下に例を示します。
ca.connector.KRA.clientCiphers=TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA
TPS の場合 (CA、KRA、およびTKSとの通信用):
tps.connector.ca id.clientCiphers=your selected cipher list
			tps.connector.kra id.clientCiphers=your selected cipher list
			tps.connector.tks id.clientCiphers=your selected cipher list
以下に例を示します。
tps.connector.ca1.clientCiphers=TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA

13.4.1.2. CA での自動失効チェックの有効化

CA は、SSL/TLS クライアントの認証中にサーバーが受信する証明書 (エージェント、管理者、登録を含む) の失効ステータスを確認するように設定できます。つまり、CA がクライアント認証要求を受け取ると、OCSP が自動的にチェックされます。(OCSP レスポンダーの設定については、『 『Red Hat Certificate System Administration Guide』の「 Using the Online Certificate Status Protocol(OCSP)Responder 」を参照してください』。)
CA は、失効チェックの一環としてクライアント認証をキャッシュし、検証された証明書の一覧を保持するようにします。これにより、CA は内部データベースまたは OCSP をチェックする前にキャッシュされた結果をチェックできるようになり、全体的な操作パフォーマンスが向上します。revocationChecking.enabled パラメーターで、自動失効チェックが有効になります。
失効ステータスの結果は、指定された期間 (revocationChecking.validityInterval) のみ有効になります。CA がキャッシュにある証明書の状態を再検証する方法がない場合は、有効期間外であっても、以前キャッシュされていた状態が有効とみなされる猶予間隔 (revocationChecking.unknownStateInterval) があります。
注記
キャッシュされた証明書はバッファー (revocationChecking.bufferSize) に保持されます。バッファー設定がない場合やゼロに設定されている場合は、バッファーは保持されません。つまり、失効チェックの結果はキャッシュされません。この場合、失効チェックはすべて CA 内部データベースに対して直接実行されます。
注記
サブシステム CS.cfg 設定ファイルにはパラメーター jss.ocspcheck.enable が含まれています。このパラメーターは、Certificate Manager が OCSP を使用して、SSL/TLS クライアントまたはサーバー認証の一部として受信する証明書の失効状態を検証するかどうかを設定します。このパラメーターの値を true に変更すると、Certificate Manager は証明書の Authority Information Access 拡張を読み取り、拡張に指定された OCSP レスポンダーから証明書の失効状態を検証します。
  1. サブシステムインスタンスを停止します。
    ]# systemctl stop pki-tomcatd@instance_name.service
  2. CS.cfg ファイルを開きます。
    vim /var/lib/pki/instance-name/ca/conf/CS.cfg
  3. 失効関連のパラメーターを編集します。
    auths.revocationChecking.bufferSize=50
    	auths.revocationChecking.ca=ca
    	auths.revocationChecking.enabled=true
    	auths.revocationChecking.unknownStateInterval=0
    	auths.revocationChecking.validityInterval=120
    • revocationChecking.ca。OCSP 応答、CA または OCSP レスポンダーを提供するサービスを設定します。
    • revocationChecking.enabled。失効チェックを設定します。true チェックを有効にします。false はチェックを無効にします。デフォルトでは、この機能は有効になっています。
    • revocationChecking.bufferSize。サーバーがキャッシュで維持する必要のある、最後に確認された証明書の合計数を設定します。たとえば、バッファーサイズが 2 の場合、サーバーはキャッシュでチェックされた最後の 2 つの証明書を保持します。デフォルトでは、サーバーは最後の 50 個の証明書をキャッシュします。
    • revocationChecking.unknownStateInterval。サーバーが失効ステータスを確認する頻度を設定します。デフォルトの間隔は 0 秒です。unknownStateInterval は、CA に証明書のステータスを確認する手段がない (情報へのアクセスが許可されていない) 場合に、キャッシュ結果が true であると見なされる猶予期間です。
    • revocationChecking.validityInterval。キャッシュされた証明書が有効とみなされる期間を設定します。間隔を選択するときは慎重に行ってください。たとえば、有効期間が 60 秒の場合、サーバーは 1 分ごとにキャッシュ内の証明書を破棄し、ソースから証明書を取得しようとします。Certificate Manager は内部データベースを使用して、証明書の失効ステータスを取得して確認します。デフォルトの有効期間は 120 秒 (2 分) です。
  4. Certificate System インスタンスを起動します。
    ]# systemctl start pki-tomcatd@instance_name.service

13.4.1.3. サブシステムの証明書失効チェックの有効化

Certificate System サブシステムには、デフォルトで OCSP チェックを有効にしてサブシステム証明書を検証します。つまり、失効した証明書を使用して管理インターフェースまたはエージェントインターフェースにログインすることができます。
server.xml ファイルを編集して、すべてのサブシステムに対して OCSP チェックを有効にできます。エージェントインターフェースと管理インターフェースは別々に設定されるため、この設定で両方のセクションを編集する必要があります。
注記
サブシステムが内部データベースで SSL/TLS 接続を使用するように設定されている場合は、LDAP 内部データベースの SSL/TLS サーバー証明書が OCSP レスポンダーによって認識される必要があります。OCSP レスポンダーが LDAP サーバー証明書を認識しない場合は、サブシステムが適切に起動しません。この設定は 、サブシステムの設定の一部としてサブシステムの設定の一部として設定されるため、Red Hat Certificate System 9 の Planning, Installation, and Deployment Guide で説明されています。
  1. 証明書ステータスの確認に使用される OCSP または CA の OCSP 署名証明書の名前を取得します。以下に例を示します。
    ]# certutil -L -d /etc/pki/instance-name/alias
    
    		Certificate Nickname                                         Trust Attributes
    																															 SSL,S/MIME,JAR/XPI
    
    		Certificate Authority - Example Domain                       CT,c,
    		ocspSigningCert cert-pki-ocsp CTu,Cu,Cu
    		subsystemCert cert-pki-ocsp                                  u,u,u
    		Server-Cert cert-pki-ocsp                                    u,u,u
    		auditSigningCert cert-pki-ocsp                               u,u,Pu
  2. サブシステムの server.xml ファイルを開きます。以下に例を示します。
    vim /etc/pki/instance-name/server.xml
  3. OCSP 署名証明書がインスタンスのセキュリティーデータベースにない場合は、インポートします。
    ]# certutil -d /etc/pki/instance-name/alias -A -n "ocspSigningCert cert-pki-ca" -t "C,," -a -i ocspCert.b64
  4. OCSP チェックを有効にするには、以下の 3 つの重要なパラメーターがあります。
    • enableOCSP: OCSP チェックを有効にするには、true に設定する必要があります。
      これはグローバル設定です。単一のインターフェースに設定されている場合には、インスタンスのすべてのインターフェースに適用されます。ただし、通常は、server.xml ファイルに記載されている最初のインターフェースで設定する必要があります。別のインターフェースの設定は無視されます。
    • ocspResponderURL: OCSP レスポンダーの URL に OCSP リクエストを送信します。
      OCSP Manager の場合は、別の OCSP または CA の別の OCSP サービスになります。その他のサブシステムでは、これは常に OCSP または CA の外部 OCSP サービスを参照します。
    • ocspResponderCertNickname: レスポンスの署名に使用する署名証明書を提供します。CA OCSP サービスの場合、これは CA の OCSP 署名証明書であり、OCSP レスポンダーについては OCSP 署名証明書になります。
    その他のパラメーターを使用して OCSP 通信を定義できます。OCSP チェックパラメーターはすべて 表13.10「server.xml の OCSP パラメーター」 に記載されています。
    エージェントインターフェースと管理者インターフェース用に、ファイルには 2 つの異なるセクションがあります。OCSP チェックを有効にして設定するには、両方のセクションに OCSP パラメーターを追加する必要があります。以下に例を示します。

    例13.4 エージェントインターフェースの OCSP 設定

    <Connector name="Agent" port="8443" maxHttpHeaderSize="8192"
    					maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    					enableLookups="false" disableUploadTimeout="true"
    					acceptCount="100" scheme="https" secure="true"
    					clientAuth="true" sslProtocol="SSL"
    					sslOptions="ssl2=true,ssl3=true,tls=true"
    
    		ssl3Ciphers="-SSL3_FORTEZZA_DMS_WITH_NULL_SHA, ..."
    
    		tls3Ciphers="-SSL3_FORTEZZA_DMS_WITH_NULL_SHA, ..."
    					SSLImplementation="org.apache.tomcat.util.net.jss.JSSImplementation"
    					enableOCSP="true"  
    					ocspResponderURL="http://server.example.com:8443/ca/ocsp"  
    					ocspResponderCertNickname="ocspSigningCert cert-pki-ca 102409a"  
    					ocspCacheSize="1000"  
    					ocspMinCacheEntryDuration="60"  
    					ocspMaxCacheEntryDuration="120"  
    					ocspTimeout="10"  
    					debug="true"
    					serverCertNickFile="/etc/pki/instance-name/serverCertNick.conf"
    					passwordFile="/etc/pki/instance-name/password.conf"
    					passwordClass="org.apache.tomcat.util.net.jss.PlainPasswordFile"
    					certdbDir="/etc/pki/instance-name/alias"/>
  5. 指定の OCSP サービスが CA ではない場合は、OCSP サービスの署名証明書がサブシステムの NSS データベースにインポートする必要があります。これは、コンソールまたは certutil を使用して 実行できます。両方のオプションは、『Red Hat Certificate System Administration Guide の「証明書システムデータベースへの証明書』 のインストール 」で説明されています。
  6. サブシステムを再起動します。
    ]# systemctl restart pki-tomcatd@instance_name.service

表13.10 server.xml の OCSP パラメーター

パラメーター 説明
enableOCSP サブシステムの OCSP チェックを有効 (または無効) にします。
ocspResponderURL OCSP リクエストが送信される URL を設定します。
OCSP Manager の場合は、別の OCSP または CA の別の OCSP サービスになります。TKS または KRA の場合、これは常に OCSP または CA の外部 OCSP サービスを指します。
ocspResponderCertNickname レスポンダーの署名証明書のニックネームを設定します。OCSP 署名証明書または CA の OCSP 署名証明書のいずれかです。証明書はサブシステムの NSS データベースにインポートされ、適切な信頼設定が設定されている必要があります。
ocspCacheSize キャッシュエントリーの最大数を設定します。
ocspMinCacheEntryDuration 別のフェッチを試行するまでの最小秒数を設定します。たとえば、これが 120 に設定された場合は、最後の有効期間をチェックから 2 分以上経たないと証明書の有効性を再度確認することができません。
ocspMaxCacheEntryDuration 次のフェッチを試みる前に待機する最大秒数を設定します。これにより、有効期間チェック間でウィンドウが大きくなり過ぎないようにできます。
ocspTimeout OCSP 要求のタイムアウト期間を秒単位で設定します。

13.4.1.4. AIA 拡張機能の登録プロファイルへの追加

外部 OCSP を使用する際にプロファイルに AIA URL を設定するには、証明書プロファイルに正しい URL を追加します。以下に例を示します。
policyset.cmcUserCertSet.5.default.params.authInfoAccessADLocation_0=http://example.com:8080/ocsp/ee/ocsp