概要

SSL(Secure Socket Layer)は、データの暗号化と、証明書を使用した認証を実装することで、クライアントとサーバーの間の通信を保護するプロトコルです。

SSL は成熟したプロトコルであり、ほとんどのブラウザーでサポートされています。

SSL では、2 者以上の間でのデータ転送時に暗号化が使用されます。送信者がデータを暗号化し、受信者がデータを復号化します。この方法は、公開鍵暗号方式として知られています。公開鍵暗号方式を利用する場合、データの送受信者は、暗号化したデータが送信される前に証明書を提示する必要があります。

SSL では、通常、使用される証明書が有効であることを確認するために、認証機関(CA)と呼ばれる信頼できるサードパーティのサーバーに接続します。

HTTP と HTTPS

HTTPS では、SSL プロトコルを使用してデータを送信します。HTTPS を使用してメッセージを送信する場合、メッセージはまず SSL を使用して暗号化され、HTTP を使用して送受信された後、最後に SSL を使用して復号化されます。

HTTP と比較して、HTTPS は暗号化によりセキュリティが高くなっており、デジタル証明書が使用されます。

API Manager での SSL の設定

API Manager には、ポータルおよびプロキシの両方のための SSL 固有の証明書ファイルが 2 つ含まれています。それらは、次のファイルです。

  1. portalsslconfig.xml
  2. proxysslconfig.xml

いずれのファイルも、<APIManagerHome>/conf にあります。同じ場所にある config.xml ファイルには、以下の行が含まれています。

<https enabled="false">

       <port>9500</port>

       <ssl ref="${sys:apim.home}/conf/portalsslconfig.xml"/>

</https>

SSL を有効にするには、キーストアと証明書を作成した後、フラグを「true」に変更します。

ColdFusion コネクタまたは Web サーバーを使用しなくても SSL を設定できます。 

注意:

このドキュメントでは、ポータルで SSL を設定する手順について説明します。プロキシで SSL を設定する場合にも同じ手順を利用できます。

キーペアと証明書の生成

キーと証明書を生成するには、JDK に付属の keytool ユーティリティを使用できます。サードパーティの証明書を使用することも、OpenSSL を使用してキーと証明書を作成することもできます。

keytool を使用して、以下のコマンドをコマンドプロンプトに入力します。

keytool -keystore keystore -alias portal -genkey -keyalg RSA

このコマンドによって、portal というエイリアスを持つキーストアが作成され、RSA アルゴリズムを使用してキーが生成されます。

コマンドを入力すると、keytool によって、一般名(CN)、組織ユニット(OU)、組織(O)、地域(L)、州/都道府県(ST)、国(C)に値を入力するように求められます。

キーストアおよびキーストアのエイリアスに対してパスワードを設定することもできます。

CN は、アプリケーションのドメイン名に一致している必要があります。

portalsslconfig.xml の更新

キーストアを生成した後、キーストアの情報を使用して portalsslconfig.xml を更新します。

<keystore>
    <path>The keystore path where the server certificate and key is present</path>
    <type>The keystore type, for example, jks or pkcs12.</type>
    <password>The keystore password</password>
    <alias>The key alias to choose as server certificate. If the keystore contains multiple aliases, you can select the specific alias by specifying here.</alias>
    <keypassword>The key password that is used to extract the private key stored at the specified alias. If you do not specify the alias, the JVM chooses the first key as alias.</keypassword>
</keystore>

例えば、次のように更新します。

<keystore>
      <path>/path/to/keystore</path>
      <type>jks</type>
      <password>keyspassword</password>
      <alias>portal</alias>
      <keypassword>aliaspassword</keypassword>              
</keystore>

クライアントと API Manager ポータル間の双方向の SSL を有効にするには、以下の設定を指定します。

  1. <clientauth>false</clientauth> を「true」に設定します。
  2. クライアント証明書が保管されている信頼ストアのパスを指定します。
  3. 信頼ストアのタイプを指定します(例えば、jksや pkcs12)。信頼ストアを指定しない場合、API Manager によって、信頼ストアがjksであるかpkcs12 であるかが検出されます。
  4. 信頼ストアのパスワードを指定します。
<truststore>
      <path>/trust/store/path</path>
      <type>jks</type>
      <password>tspassword</password>
</truststore>
<clientauth>true</clientauth>

TLS プロトコルの指定

HTTPS リスナーがサポートする TLS プロトコルの一覧を指定します。デフォルトで、すべての TLS プロトコルが有効になります。

<protocols>
      <value>TLSv1.2</value>
      <value>TLSv1.1</value>
      <value>TLSv1</value>
</protocols>

暗号スイートの指定

組み込む、または除外する暗号スイートの一覧を指定します。指定した暗号スイートの一覧が、HTTPS によってサポートされるものになります。組み込むリストを空にした場合、デフォルトで、JVM でサポートされるすべての暗号スイートが組み込まれます。

<ciphersuites>
      <excluded>
             <value>.*NULL.*</value>
             <value>.*RC4.*</value>
             <value>.*MD5.*</value>
             <value>.*DES.*</value>
             <value>.*DSS.*</value>
             <Item>.*_RSA_.*MD5$</Item>
      </excluded>
      <included>
             <value>TLS_DHE_RSA.*</value>
             <value>TLS_ECDHE.*</value>
      </included>
</ciphersuites>

config.xml の更新

https を「true」にして有効にし、指定したポートからポータルにアクセスします。

<https enabled="true">
     <port>9500</port>
     <ssl ref="${sys:apim.home}/conf/portalsslconfig.xml"/>
</https>

Administrator ポータルにアクセスするには、ブラウザーに以下を入力します。

https://<servername>:9500/admin.html

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー