Endeca IAS Serviceに対するSSLの有効化

この手順によって、IASクライアントから、Endeca IAS Service内部で動作するWebサービスへのセキュアな接続を確立します。IAS Server、Component Instance Managerおよびレコード・ストアWebサービスがEndeca IAS Service内部で動作することに注意してください。このタスクでは、Endeca IAS Serviceのクライアントに対する相互認証を無効化する方法と、HTTPSリダイレクトを無効化する方法についても説明しています(相互認証およびHTTPSリダイレクトはデフォルトで有効化されています)。

このタスクでは、Endeca IAS Serviceを実行するサーバー用に、キーストア・ファイルおよびトラストストア・ファイルの作成をすでに完了済している必要があります。

注意: 簡略化のために、次のパスはWindows構文を使用しています。UNIXパスの場合も同様です。

Endeca IAS Serviceに対してSSLを有効化するには、次の手順を行います。

  1. Endeca IAS Serviceを停止します。
  2. 以前に作成したキーストア・ファイルを<install path>\IAS\workspace\confにコピーします。
  3. オプションで、相互認証を有効化するには、以前に作成したトラストストア・ファイルを<install path>\IAS\workspace\confにコピーします。
  4. <install path>\IAS\workspace\confで、テキスト・エディタでjetty.xmlを開きます。
  5. SSL構成プロパティのある、セクションのコメントを解除します。
  6. SSL構成セクションで、次に示すトークンを、IASを実行するマシン上の完全修飾ホスト、SSLポート、トラストストアおよびキーストアのプロパティに置き換えます。
    プロパティ 置換対象のトークン
    com.endeca.ias.fullyQualifiedHostName @IASHOST@
    com.endeca.ias.ssl.port @IASSSLPORT@
    javax.net.ssl.trustStore @TRUSTSTORE_FILE@
    javax.net.ssl.trustStorePassword @TRUSTSTORE_PASSWORD@
    javax.net.ssl.trustStoreType JKS
    javax.net.ssl.keyStore @KEYSTORE_FILE@
    javax.net.ssl.keyStorePassword @KEYSTORE_PASSWORD@
    javax.net.ssl.keyStoreType JKS

    ホスト名が完全修飾されていることを確認します。また、トラストストアおよびキーストアの場所への相対パスをお薦めします。パスは、IAS\<バージョン>に相対する必要があります。

    次に例を示します。

    <Configure id="Server" class="org.mortbay.jetty.Server">
    
    	<!-- Redirect java.util.logging to slf4j -->
    	<Call class="org.slf4j.bridge.SLF4JBridgeHandler" name="install"/>
    
    	<!-- Set the com.endeca.ias.port with the port we will run on -->
    	<Call class="java.lang.System" name="setProperty">
    		<Arg>com.endeca.ias.port</Arg>
    		<Arg><SystemProperty name="com.endeca.ias.port" default="8401"/></Arg>
    	</Call>
    
    	<!-- If the com.endeca.ias.ssl.port is set. IAS will default to using 
       this port and use HTTPS to communicate with IAS Component instances. 
       Make sure to also add a secure data source by uncommenting the proper 
       section in this file.
    
    		 Make sure the trust store and key store are set properly.
    		 If using self-signed certificate, you need to also put the 
       certificate in the truststore.-->
    
    	<Call class="java.lang.System" name="setProperty">
    		<Arg>com.endeca.ias.ssl.port</Arg>
    		<Arg><SystemProperty name="com.endeca.ias.ssl.port" default="8402"/></Arg>
    	</Call>
    
    	<Call class="java.lang.System" name="setProperty">
    		<Arg>com.endeca.ias.fullyQualifiedHostName</Arg>
    		<Arg>hostname.eng.endeca.com</Arg>
    	</Call>	
    
    	<Call class="java.lang.System" name="setProperty">
    		<Arg>javax.net.ssl.trustStore</Arg>
    		<Arg><SystemProperty name="jetty.home" default="." />/../workspace/conf/truststore.ks</Arg>
    	
    	<Call class="java.lang.System" name="setProperty">
    		<Arg>javax.net.ssl.trustStorePassword</Arg>
    		<Arg>endeca</Arg>
    	</Call>
    
    	<Call class="java.lang.System" name="setProperty">
    		<Arg>javax.net.ssl.trustStoreType</Arg>
    		<Arg>JKS</Arg>
    	</Call>
    
    	<Call class="java.lang.System" name="setProperty">
    		<Arg>javax.net.ssl.keyStore</Arg>
    		<Arg><SystemProperty name="jetty.home" default="." />/../workspace/conf/keystore.ks</Arg>
    	
    	<Call class="java.lang.System" name="setProperty">
    		<Arg>javax.net.ssl.keyStorePassword</Arg>
    		<Arg>endeca</Arg>
    	</Call>
    
    	<Call class="java.lang.System" name="setProperty">
    		<Arg>javax.net.ssl.keyStoreType</Arg>
    		<Arg>JKS</Arg>
    	</Call>
  7. またjetty.xmlでも、データソース・セクションを検索して、次をコメント解除することによってSslSocketdata sourceクラスを有効化します。
    <Call name="adddata source">
    	 <Arg>
    		<New class="org.mortbay.jetty.security.SslSocketdata source">
    		   <Set name="Port"><SystemProperty name="com.endeca.ias.ssl.port"/></Set>
    		   <Set name="maxIdleTime">30000</Set>
    		   <Set name="keystore"><SystemProperty 
            name="javax.net.ssl.keyStore"/></Set>
    		   <Set name="keyPassword"><SystemProperty 
            name="javax.net.ssl.keyStorePassword"/></Set>
    		   <Set name="truststore"><SystemProperty 
            name="javax.net.ssl.trustStore"/></Set>
    		   <Set name="trustPassword"><SystemProperty 
            name="javax.net.ssl.trustStorePassword"/></Set>
    		   <!-- set this to false if you want mutual authentication to 
          be turned off -->
    		   <Set name="needClientAuth">true</Set>
    		</New>
    	 </Arg>
    </Call>
  8. オプションで、相互認証を無効化するには、前述のneedClientAuthfalseに設定します。デフォルトではtrue (相互認証が有効化)になっています。
  9. オプションでHTTPSリダイレクトを無効化するために、SelectChanneldata sourceデータソースをコメントアウトするか、このデータソースを削除します。デフォルトでは、HTTPSリダイレクトが有効化されています。(セキュアでないHTTPリクエストは、セキュアなSSLポートにリダイレクトされます。IASのデフォルトのSSLポートは8402です。)

    たとえばリダイレクトを無効化するには、次をコメントアウトします。

    <!-- <Call name="adddata source">
       <Arg>
           <New class="org.mortbay.jetty.nio.SelectChanneldata source">
              <Set name="port"><SystemProperty name="com.endeca.ias.port"/></Set>
              <Set name="maxIdleTime">30000</Set>
              <Set name="Acceptors">2</Set>
              <Set name="statsOn">false</Set>
              <Set name="confidentialPort"><SystemProperty 
                 name="com.endeca.ias.ssl.port" default="8402"/></Set>
    		        <Set name="lowResourcesConnections">5000</Set>
    		        <Set name="lowResourcesMaxIdleTime">5000</Set>
           </New>
       </Arg>
    </Call> -->
  10. IAS SSLデフォルト(8402)以外のポートへのHTTPSリダイレクトを使用している場合、ご使用の環境に適したポートへdefault="8402"を変更してください。
  11. jetty.xmlを保存して閉じます。
  12. 同じディレクトリ(<install path>\IAS\workspace\conf)において、テキスト・エディタでwebdefault.xmlを開きます。
  13. user-data-constraintセクションのコメントを解除します。

    次に例を示します。

    <security-constraint>
      <user-data-constraint>
        <transport-guarantee>
          CONFIDENTIAL
        </transport-guarantee>
      </user-data-constraint>
      <web-resource-collection>
        <url-pattern>/*</url-pattern>
      </web-resource-collection>
    </security-constraint>
  14. webdefault.xmlを保存して閉じます。
  15. Endeca IAS Serviceを起動します。

Webブラウザを起動してIAS SSLポートでIAS Server WSDLをロードすることによって、あるいはリダイレクトを有効化している場合は、これを非SSLポートでロードすることによって、Endeca IAS Serviceに対してSSLが有効化されていることを確認できます。たとえば、https://hostname:8402/ias/?wsdlを指定するか、またはリダイレクトを有効化している場合はhttp://hostname:8401/ias/?wsdlを指定します。次のWSDLが表示されます。

<?xml version="1.0" encoding="UTF-8" ?> 
- <wsdl:definitions name="IasCrawlerService" targetNamespace="http://endeca.com/eidi/ias/2011-12" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://endeca.com/eidi/ias/2011-12" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <wsdl:types>
...