CAC が有効になっている場合の統合の設定

casp1032jp
概要
Spectrum と eHealth の設定で Common Access Card (CAC)認証が有効になっている場合、2 つの製品の統合が機能するにはる追加手順が必要です。各製品は他の製品の Web サービスを使用するため、統合が正しく機能するには以下の手順が必要です。 CAC 認証を有効にした場合、Web サービスの利用には証明書を使用した認証が必要になります。CAC が有効になっている環境で統合を活用するために必要な手順を理解することは、CAC の仕組みの理解に役立ちます。CAC が有効になっている環境では、ユーザは証明書を使用して各製品の Apache サーバとの信頼を確立します。
注:
 CAC が有効になっている場合の統合を続ける前に、「Common Access Card 認証」を参照して、CAC と CA Spectrum の統合について理解しておく必要があります。
 
Establish trust with Apache servers
ユーザが CAC カードを使用して OneClick サーバにログインすると、サーバは最初に、証明書が信頼されているかどうかを検証します。証明書がトラスト ストアと照らし合わせて検証されると、認証プロセスに渡されてさらに検証が行われ、証明書が失効していないことが確認され、続いて LDAP 認証が行われます(設定されている場合)。証明書が信頼されていない場合、接続は拒否されます。
統合された Spectrum および eHealth 環境では、2 つの製品は互いの Web サービスを使用して通信します。CAC が有効になっている場合、サーバが互いに通信するには同じ証明書認証が必要です。
OneClick and eHealth
Spectrum OneClick は、eHealth httpd サーバで認証を受けるためにローカル キー ストアの証明書を使用するように設定し、eHealth httpd サーバは、この証明書を信頼するように設定する必要があります。この逆も同じです。nhSpectrumSetup などの eHealth ユーティリティは、Spectrum OneClick サーバで認証を受けるために証明書を使用するように設定し、Spectrum OneClick サーバは、その証明書を信頼するように設定する必要があります。
統合のセットアップ(Spectrum 側)
すでに CAC を設定してある場合(CAC の設定手順については「CA Spectrum Common Access Card 認証」を参照)、公開/秘密キーのペア(エイリアスは 
tomcatssl
)が $SPECROOT/custom/keystore/cacerts に格納されている必要があります。Spectrum は、この証明書を使用して eHealth httpd サーバで認証を受けます。
  1. エイリアスが 
    tomcatssl
    の証明書を使用して eHealth サーバで認証を受けるように OneClick を設定します。
    tomcatssl
    証明書は、$SPECROOT/custom/keystore/cacerts にある唯一の公開/秘密キーのペアです。Spectrum OneClick を設定するには、以下の手順に従います。
    Windows:
    • $SPECROOT/tomcat/bin/OneClickService.conf ファイルを編集し、以下の行を追加して、$SPECROOT を完全修飾パス < C:/win32app/Spectrum > に、キー ストア パスワードを <password> (デフォルト パスワードの changeit を変更した場合は新しいキー ストア パスワード)に置き換えます。
      • jvm_opt=-Djavax.net.ssl.keyStore=$SPECROOT/custom/keystore/cacerts
      • jvm_opt=-Djavax.net.ssl.keyStorePassword=<password>
    Linux の場合 
    • $SPECROOT/tomcat/bin/catalina.sh を編集し、JAVA_OPTS を検索します。JAVA_OPTS は Linux 用に設定されています。以下のパラメータをパラメータのリストに追加して、キー ストア パスワードを <password> (デフォルト パスワードの changeit を変更した場合は新しいキー ストア パスワード)に置き換えます。
      • -Djavax.net.ssl.keyStore=$SPECROOT/custom/keystore/cacerts
      • -Djavax.net.ssl.keyStorePassword=<password>
        注:
         これらの変更を行った後に 64 ビット OneClick を有効にする場合は、もう一度変更を行います。
  2. Spectrum システムからの接続を信頼するように eHealth システムを設定します。ホスト証明書(
    tomcatssl
    証明書)が証明書チェーンの一部である場合は、$NH_HOME/web/httpd/conf/cacerts に配置することにより、すべてのルートおよび中間証明書を eHealth のトラスト ストアにインポートする必要があります。以下に例を示します。
    image2015-2-16 12:19:50.png
    ここで、「Root CA」および「Intermediate CA」の証明書を $NH_HOME/web/httpd/conf/cacerts にコピーする必要があります。これが完了したら、eHealth CAC 設定セクションの説明に従って nhWebProtocol コマンドを再実行する必要があります。チェーンがない場合は、「examplehost.company.com」の証明書をコピーするだけです。どちらの例でも、「examplehost.company.com」は、以前に生成またはインポートされたエイリアス 
    tomcatssl
    の証明書です。
  3. 反対に、eHealth Web サーバからの接続を信頼するように Spectrum システムを設定する必要もあります。eHealth Web サーバが図 1 のように設定されている場合、ホストに対して使用された上記のチェーン内のすべての証明書をインポートする必要があります(この例では「Root CA」および「Intermediate CA」)。これらの証明書は、keytool ユーティリティを使用して、$SPECROOT/custom/keystore/cacerts の Spectrum OneClick トラスト ストアにインポートする必要があります。以下に例を示します。
    • $SPECROOT/Java/bin/keytool -importcert  -trustcacerts  -alias <EH ROOT CERT> -file <eh root cert file> -keystore $SPECROOT/custom/keystore/cacerts
    • 最後の証明書を除いて、チェーン内のすべての証明書に対してこの操作を行います。
    • 証明書チェーンがない場合は、eHealth Web サーバによって使用される証明書をインポートします。
      注:
       このケースでは、eHealth の自己署名公開証明書を意味しています。nhWebProtocol を再実行するときに別の eHealth の公開証明書が指定された場合は、Spectrum のトラスト ストアから古い証明書を削除し、新しい証明書をインポートします。
    • 最後に、Spectrum が、eHealth システムで使用される証明書の失効ステータスを確認できるようにする必要があります。たとえば、ルートおよび中間証明書、または自己署名証明書の CRL を生成する必要があります。
統合のセットアップ(eHealth 側)
EHealth システム側で統合を設定するには、以下の手順が必要です。eHealth の将来のリリースでこれらの手順を簡素化するように取り組んでいるため、これらの手順は将来のある時点で変更される場合があります。
手順 1:
Spectrum OneClick サーバで認証を受けるために、eHealth ユーティリティで使用できる Java キー ストアを設定します。
    • $NH_HOME/web/httpd/bin/openssl pkcs12 -export -in $NH_HOME/web/httpd/conf/server.crt -inkey $NH_HOME/web/httpd/conf/server.key -out $NH_HOME/web/httpd/conf/server.p12 -name EhPublicCert
      • パスワード「changeit」を入力します。
    • $NH_HOME/jre/bin/keytool -importkeystore  -deststorepass changeit -destkeypass changeit -destkeystore $NH_HOME/web/httpd/conf/ehcert.jks -srckeystore server.p12 -srcstoretype PKCS12 -srcstorepass changeit -alias EhPublicCert
    • rm $NH_HOME/web/httpd/conf/server.p12
注:
 nhWebProtocol が EH サーバ上ですでに実行されていることを前提としています。server.crt は、eHealth システム側で CAC を設定するときに作成された <hostname>.crt ファイルと一致する必要があります。
手順 2:
eHealth ユーティリティが信頼し、Spectrum システムへの接続を許可できるように、eHealth ユーティリティで使用できるトラスト ストアを設定します。これを設定するには、keytool ユーティリティを使用して $NH_HOME/web/httpd/conf/cacerts にコピーした同じ Spectrum 証明書をインポートする必要があります。たとえば、図 1 に示されているチェーンと同じチェーンを使用する場合は、以下のようになります。
  • $NH_HOME/jre/bin/keytool -import –trustcacerts -alias SpecRoot  -file $NH_HOME/web/httpd/conf/cacerts/<Root Certificate File> -keystore $NH_HOME/web/httpd/conf/spectrust.jks –storepass <password>
  • 必要な場合は、中間証明書についてこの手順を繰り返します。
注:
 e-Health 6.3.2.09 リリースから、nhSpectrumSetup/Import シェル スクリプト ファイルの変更は不要になりました。e-Health 6.3.2.09 リリースが利用可能になるまで、以下の回避策を使用できます。
手順 3:
nhSpectrumSetup を変更して実行します。
  • $NH_HOME/bin/nhSpectrumSetup を編集します。
  • Java アプリケーションが起動する行を見つけ、以下のパラメータを追加します。
    • -Djavax.net.ssl.keyStore=${NH_HOME}/web/httpd/conf/ehcert.jks
    • -Djavax.net.ssl.keyStorePassword=<password>
    • -Djavax.net.ssl.trustStore=${NH_HOME}/web/httpd/conf/spectrust.jks
    • -Djavax.net.ssl.trustStorePassword=<password>
  • 最終的な結果は、以下のコードのようになります。
  • image2015-2-16 13:36:31.png
    ここで、nhSpectrumSetup を実行して eHealth 側の統合のセットアップを完了する必要があります。