SSL をサポートする Java CAPS の構成

第 1 章 SSL をサポートする Java CAPS の構成

次に示すトピックでは、SSL (Secure Sockets Layer) をサポートする Sun JavaTM Composite Application Platform Suite (Java CAPS) を構成する方法について説明しています。

ご質問またはご不明な点がありましたら、Java CAPS の Web サイト (http://goldstar.stc.com/support) を参照してください。

SSL の概要

SSL (Secure Sockets Layer) プロトコルを使用すれば、インターネットを介したクライアントとサーバー間の通信を保護できます。

SSL には、サーバー認証、クライアント認証、データ暗号化などの機能があります。「認証」とは、サーバーまたはクライアントの正当性を確認することです。「暗号化」とは、送信する前にデータを読み取れない形式に変換することです。

SSL を使用する URL のスキーマは、https です。次に例を示します。


https://www.onlinebooks.com/creditcardinfo.html

SSL の最新バージョンは TLS (Transport Layer Security) と呼ばれており、IETF (Internet Engineering Task Force) が TLS の規格を管理しています。

公開鍵、非公開鍵、および証明書

認証の実行時、SSL では「公開鍵暗号方式」と呼ばれる技術を使用します。

公開鍵暗号方式は、「公開鍵」と「非公開鍵」から成るキーペアの概念に基づいています。公開鍵を使用して暗号化されたデータは、対応する非公開鍵でのみ復号化できます。反対に、非公開鍵を使用して暗号化されたデータは、対応する公開鍵でのみ復号化できます。

図に、公開鍵を使用した単語の暗号化と、非公開鍵を使用した単語の復号化を示します。

キーペアの所有者は、公開鍵はだれにでも使用可能にし、非公開鍵は秘密にしておきます。

「証明書」により、エンティティーが特定の公開鍵の所有者であることが検証されます。

X.509 標準に準拠する証明書には、データセクションと署名セクションがあります。データセクションに含まれる情報は、次のとおりです。

証明書は、VeriSign などの認証局 (CA) から取得できます。また、所有者と発行者が同じである「自己署名付き証明書」を作成することもできます。

証明書を発行する組織は、CA の階層を確立できます。ルート CA は、自己署名付き証明書を保持します。各従属 CA は、階層内で一つ上位の CA によって署名された証明書を持ちます。「証明書チェーン」とは、特定の CA の証明書に、ルート CA にまでつながるそれより上位の CA の証明書をすべて加えたものです。

keytool プログラム

keytool プログラムは、JavaTM SDK の bin ディレクトリに含まれるセキュリティーツールです。

このツールは、「キーストア」と呼ばれる一種のデータベースを管理します。キーストアには、次の 2 つのタイプのエントリが格納されます。

キーストア内の各エントリは、一意の「エイリアス」によって識別されます。キーストアにエンティティーを追加する場合は、必ずエイリアスを指定してください。

keytool プログラムで使用できるコマンドには、次のものが含まれます。

keytool プログラムの詳細については、http://java.sun.com/j2se/1.5.0/docs/tooldocs/index.html を参照してください。

OpenSSL プロジェクト

OpenSSL プロジェクトは、暗号化ライブラリだけでなく、SSL および TLS プロトコルも実装するオープンソースのツールキットを開発するプロジェクトです。

このツールキットに含まれる openssl コマンド行ツールにより、暗号化ライブラリのさまざまな関数が利用可能になります。

openssl ツールで使用できるコマンドには、次のものが含まれます。

最新バージョンの OpenSSL は、http://www.openssl.org からダウンロードできます。

SSL とアダプタ

HTTP、LDAP、および WebSphere MQ で SSL を使用すると、ハッカーやその他のエンティティーによる不正な傍受から、データ交換をセキュリティー保護できます。アダプタの SSL 機能により、データ交換のためのセキュリティー保護された通信チャネルが提供されます。

次の図に、LDAP アダプタでの SSL の使用を示します。

図は、SSL がどのようにしてハッカーが行う man-in-the-middle 攻撃を防ぐかを示しています。

この SSL 機能は、Java Secure Socket Extension (JSSE) version 1.0.3 の使用を介してサポートされます。

現在は、JSSE のリファレンス実装が使用されています。JSSE はプロバイダベースのアーキテクチャで、これにより、暗号化アルゴリズム、ハッシュアルゴリズム、SSL 対応 URL ストリームハンドラ、その他の標準インタフェースのセットが提供されます。

ユーザーはこれらのインタフェースを介して JSSE と対話するので、公開されたインタフェースの下で実装がプログラムされているかぎり、さまざまなコンポーネントを混在させて組み合わることができます。ただし、一部の実装は、特定のアルゴリズムをサポートしない可能性があります。

JSSE 1.0.3 API は、SSL version 2.0 と 3.0、および TLS version 1.0 をサポートします。これらのセキュリティープロトコルにより、通常の双方向ストリームソケットがカプセル化されます。JSSE 1.0.3 API により、認証、暗号化、および完全性の保護の透過的サポートも提供されます。JSSE のリファレンス実装では、SSL version 3.0 と TLS version 1.0 が実装されます。

Web サーバーとの SSL 接続の設定に使用できるオプションは、次のとおりです。

キーストアとトラストストア

JSSE では、「キーストア」および「トラストストア」と呼ばれるファイルを使用します。キーストアは、アダプタでクライアント認証に使用され、トラストストアは、SSL 認証でサーバーを認証する際に使用されます。

キーストアとトラストストアは両方とも、Java SDK インストールに含まれている keytool という名前のユーティリティーによって管理されます。

キーストアとトラストストアの生成

次の節では、キーストアとトラストストアの両方を作成する方法について説明します。または、次の場所にあるデフォルトの論理ホストのトラストストアのような既存のトラストストアに証明書をインポートしてもかまいません。


<c:\JavaCAPS>\appserver\domains\<MyDomain>\config\cacerts.jks

<c:\JavaCAPS> は Java CAPS がインストールされるディレクトリ、<MyDomain> はお使いのドメイン名です。主に使用するツールは keytool ですが、opensslpkcs12 キーストアを生成するためのリファレンスとして使用します。

openssl と利用可能なダウンロードの詳細については、次の Web サイトを参照してください。

http://www.openssl.org

JKS 形式のキーストアの作成

この節では、非公開鍵、および関連する証明書または証明書チェーンの両方のデータベース形式に JKS 形式を使用してキーストアを作成する方法について説明します。keytool はデフォルトでは、java.security ファイルに指定されているように、キーおよび証明書のデータベース (キーストアおよびトラストストア) の形式として JKS を使用します。CA は、証明書署名要求 (CSR) に署名する必要があります。これによりその CA は、アダプタの接続先であるサーバー側アプリケーションによって信頼されます。


注 –

次のデフォルトのキーストアを使用することをお勧めします。


<c:\JavaCAPS>\appserver\domains\<MyDomain>\config\keystore.jks

<c:\JavaCAPS> は Java CAPS がインストールされるディレクトリ、<MyDomain> はお使いのドメイン名です。


Procedureキーストアを生成する

  1. 次のコマンドを実行します。


    keytool -keystore clientkeystore -genkey -alias client
  2. 要求に従って、CSR の生成に必要な情報を入力します。次に、キーの生成セクションの例を示します。


    Enter keystore password: javacaps
    What is your first and last name?
    [Unknown]: development.sun.com
    What is the name of your organizational unit?
    [Unknown]: Development
    what is the name of your organization?
    [Unknown]: Sun
    What is the name of your City or Locality?
    [Unknown]: Monrovia
    What is the name of your State or Province?
    [Unknown]: California
    What is the two-letter country code for this unit?
    [Unknown]: US
    Is<CN=development.sun.com, OU=Development, O=Sun, L=Monrovia, ST=California, 
    C=US> correct?
    [no]: yes
    
    Enter key password for <client>
        (RETURN if same as keystore password):

    キーストアパスワードが指定されている場合は、アダプタにそのパスワードを指定します。

  3. キーパスワードの入力を要求されたら、RETURN キーを押します。これで、キーパスワードがキーストアパスワードと同じになります。

    この操作で、キーストアファイル clientkeystore が現在の作業ディレクトリに作成されます。「氏名 (名前と名字)」の質問には、完全修飾ドメインを指定する必要があります。このようにする理由は、VeriSign など一部の CA が、このプロパティーを完全修飾ドメイン名と見なすからです。

    完全修飾ドメインを要求しない CA もありますが、可搬性を考慮して、完全修飾ドメイン名を使用することをお勧めします。そのほか、入力するすべての情報は有効でなければなりません。それらの情報を確認できないかぎり、VeriSign などの CA は、このエントリで生成される CSR に署名しません。

    このキーストアには、クライアントのエイリアスを持つエントリが格納されます。次に示すように、このエントリは、生成された非公開鍵と CSR の生成に必要とされる情報から成ります。


    keytool -keystore clientkeystore -certreq -alias client -keyalg rsa -file client.csr

    このコマンドで、証明書要求用に CA に提出できる証明書署名要求を生成します。client.csr ファイルには、PEM 形式で CSR が格納されます。

    いずれかの CA (アダプタの接続先となる Web サーバーが信頼する CA) が、CSR に署名する必要があります。その CA は、対応する CSR の証明書を生成し、自身の非公開鍵で証明書に署名します。詳細については、次の Web サイトを参照してください。

    http://www.thawte.com

    または

    http://www.verisign.com

    その証明書が CA の証明書とチェーンになっている場合は次の手順の手順 4 を実行し、そうでない場合は手順 5 を実行します。

  4. 次のコマンドを実行します。


    keytool -import -keystore clientkeystore -file client.cer -alias client

    このコマンドで証明書をインポートし、クライアント証明書が client.cer ファイルに、CA の証明書が CARoot.cer ファイルにあると想定します。

  5. 次のコマンドを実行して、CA の証明書をキーストアにインポートし、クライアントの証明書とチェーンにします。


    keytool -import -keystore clientkeystore -file CARoot.cer -alias theCARoot
  6. 次のコマンドを実行して、前の手順で証明書をインポートした CA によって署名されたクライアントの証明書をインポートします。


    keytool -import -keystore clientkeystore -file client.cer -alias client

    生成される clientkeystore ファイルには、クライアントの非公開鍵と、それに関連する証明書チェーンが格納され、クライアントの認証および署名に使用されます。これで、キーストア、clientkeystore の両方またはいずれかを、アダプタのキーストアとして使用できます。

PKCS12 形式のキーストアの作成

この節では、JSSE で使用できる PKCS12 キーストアの作成方法について説明します。実際の稼動環境では、顧客が既存の非公開鍵と証明書 (既知の CA によって署名済み) をすでに保持している場合があります。その場合、ユーザーは keytool を使用しての非公開鍵のインポート、エクスポートいずれもできないため、JKS 形式は使用できません。非公開鍵とその証明書から成る PKCS12 データベースの生成が必要です。

生成された PKCS12 データベースは、アダプタのキーストアとして使用できます。現在、keytool ユーティリティーには、PKCS12 データベースへの書き込み機能はありませんが、PKCS12 データベースから読み取ることはできます。


注 –

PKCS12 証明書を生成できる他社製のツールを代わりに使用することもできます。


次の例では、openssl を使用して PKCS12 キーストアを生成しています。


cat mykey.pem.txt mycertificate.pem.txt>mykeycertificate.pem.txt

既存のキーは、mykey.pem.txt ファイルに PEM 形式で格納されています。証明書は mycertificate.pem.txt にあり、これも PEM 形式です。キーおよびそのあとに続く証明書を含むテキストファイルを次のように作成します。


openssl pkcs12 -export -in mykeycertificate.pem.txt -out mykeystore.pkcs12 
-name myAlias -noiter -nomaciter

このコマンドは、ユーザーにパスワードの入力を要求します。パスワードは必須です。パスワードがないと、キーストアは JSSE で動作しません。このパスワードは、アダプタのキーストアパスワード用のパスワードとしても指定します。

このコマンドでは、openssl pkcs12 コマンドを使用して、非公開鍵と証明書を持つ PKCS12 キーストアも生成します。生成されるキーストアは mykeystore.pkcs12 で、myAlias エイリアスで指定されたエントリが格納されます。このエントリには、-in 引数で指定した非公開鍵と証明書が含まれます。noiter オプションと nomaciter オプションを指定して、生成されるキーストアが JSSE によって正しく認識されるようにします。

トラストストアの作成

ここでは、信頼できる firstCA.cert、secondCA.cert、thirdCA.cert という CA が C:\cascerts ディレクトリに存在すると仮定して説明します。これら 3つの信頼できる証明書から成る新しいトラストストアを作成できます。

Procedure新規トラストストアを作成する

  1. 次のコマンドを実行します。


    keytool -import -file C:\cascerts\firstCA.cert -alias firstCA -keystore myTrustStore
  2. このコマンドをあと 2 回入力しますが、firstCA の箇所を 2 回目は secondCA で、3 回目は thirdCA で置き換えます。これらの各コマンドエントリには、次の目的があります。

    • 最初のエントリで、myTrustStore という名前のキーストアファイルを現在の作業ディレクトリに作成し、firstCA 証明書を firstCA というエイリアスでトラストストアにインポートします。myTrustStore の形式は JKS です。

    • 2 回目のエントリでは、secondCA を代わりに使用して、secondCA 証明書をトラストストア myTrustStore にインポートします。

    • 3 回目の入力では、thirdCA を代わりに使用して、thirdCA 証明書をトラストストアにインポートします。

    これらを完了すると、myTrustStore をアダプタのトラストストアとして使用できます。

SSL を使用する Sun JMS IQ Manager の構成

Sun JMS IQ Manager で自己署名付きサーバー証明書を利用できます。

認証モードは、Authenticate または TrustAll に設定できます。

デフォルトのモードは、TrustAll です。

Sun JMS IQ Manager の自己署名付きサーバー証明書は、独自のサーバー証明書で置き換えることができます。

メッセージサーバー URL の設定

環境プロパティーを編集して、Sun JMS IQ Manager の SSL を設定できます。

Procedureメッセージサーバー URL を設定する

  1. NetBeans IDE の「サービス」ウィンドウで、JMS IQ Manager が存在する CAPS 環境を展開します。

  2. 「JMS IQ Manager」を右クリックして、「プロパティー」を選択します。

    「プロパティー」ダイアログボックスが表示されます。

    「プロパティー」ダイアログボックスのスクリーンショット。
  3. Sun JMS IQ Manager URL プロパティーが、stcmss で始まり、JMS IQ Manager の SSL ポート番号を含むことを確認します。次に例を示します。


    stcmss://localhost:18008
  4. メッセージサーバーが送信するサーバー証明書をクライアントで認証する場合は、Sun JMS IQ Manager URL プロパティーに com.stc.jms.ssl.authenticationmode=Authenticate という文字列を追加します。次に例を示します。


    stcmss://localhost:18008?com.stc.jms.ssl.authenticationmode=Authenticate
  5. 接続先のメッセージサーバーをクライアントで常に信頼する場合は、Sun JMS IQ Manager URL プロパティーに com.stc.jms.ssl.authenticationmode=TrustAll という文字列を追加します。次に例を示します。


    stcmss://localhost:18008?com.stc.jms.ssl.authenticationmode=TrustAll
  6. 「OK」をクリックします。

外部 JMS クライアント

デフォルトでは、Sun JavaTM System Application Server 内部に配備される JMS クライアントは、デフォルトのキーストアとトラストストアを使用します。

外部 JMS クライアントでは、接続ファクトリに次のプロパティーを設定してください。

接続ファクトリをインスタンス化してプロパティーを設定する方法については、『Enterprise Service Bus API Kit for JMS IQ Manager (Java Edition)』を参照してください。

自己署名付きサーバー証明書の変更

Sun JMS IQ Manager の自己署名付きサーバー証明書は、独自のサーバー証明書で置き換えることができます。

ここで説明する手順は、次の条件を前提としています。

Procedure自己署名付きサーバー証明書を変更する

  1. サーバー証明書を Sun Java System Application Server のデフォルトのトラストストアにインポートします。トラストストアは、JavaCAPS-install-dir/appserver/domains/domain-name/config ディレクトリにあります。


    keytool -import -alias stcmscert -file mycacert.pem -keystore cacerts.jks

    -alias オプションには、任意の値を指定できます。

  2. サーバー証明書と非公開鍵を PEM 形式から PKCS #12 形式に変換します。openssl コマンド行ツールの pkcs12 コマンドを使用して、サーバー証明書と非公開鍵の両方を含むファイルをエクスポートできます。


    openssl pkcs12 -export -in mycacert.pem -inkey mycakey.pem -out mycert.p12
    -name "stcmscert"
  3. ファイルを次のように変更します。

    1. サーバー証明書ファイルの名前を mycacert.pem から stcmscert.pem に変更します。

    2. 非公開鍵ファイルの名前を mycakey.pem から stcmskey.pem に変更します。

    3. (UNIX のみ) stcmscert.pem ファイルを stcmscert.cer という名前の新規ファイルにコピーします。

    4. (Windows のみ) PKCS #12 ファイルの名前を mycert.p12 から stcmscert.cer に変更します。

  4. stcmscert.pem ファイル、stcmskey.pem ファイル、および stcmscert.cer ファイルを JavaCAPS-install-dir/appserver/addons/stcms/templates ディレクトリにコピーします。

  5. すでにインスタンスを作成している場合は、stcmscert.pem ファイル、stcmskey.pem ファイル、および stcmscert.cer ファイルを JavaCAPS-install-dir/appserver/domains/domain-name/addons/stcms/instance-name/config ディレクトリにもコピーしてください。

  6. JavaCAPS-install-dir/appserver/addons/stcms/templates ディレクトリの stcms.default.Properties ファイルを開きます。

  7. STCMS.SSL.UserId プロパティーと STCMS.SSL.Password プロパティーを追加します。


    STCMS.SSL.UserId=mycertuserid
    STCMS.SSL.Password=mycertpassword
  8. (Windows のみ) STCMS.SSL.CertificateFileStore.Option プロパティーの値を設定します。

    • JMS IQ Manager で証明書を自動的にインストールする場合は、この値を On に設定します。

    • certmgr ツールまたは Internet Explorer を使用して証明書をインストールする場合は、この値を Off に設定します。

  9. すでにインスタンスを作成している場合は、stcms.default.Properties ファイルを JavaCAPS-install-dir/appserver/domains/domain-name/addons/stcms/instance-name/config ディレクトリにコピーします。

  10. ドメインが実行中の場合は、ドメインを再起動します。

SSL を使用するリポジトリの構成

リポジトリの HTTPS サービスは、サーバー証明書がインストール済みでないかぎり、実行されません。リポジトリで使用できるサーバー証明書を設定して SSL を有効にするには、次の手順を実行します。


注 –

SSL を使用するようにリポジトリを構成した場合、NetBeans IDE のユーザーはリポジトリに接続できません。


リポジトリで SSL を使用できるようにするには、次の節で説明するタスクを実行します。


注 –

このトピックの手順では、SSL ポートとしてポート番号 8443 を使用します。「SSL を使用する Enterprise Manager の構成」の手順でも、SSL ポートとしてポート番号 8443 を使用します。リポジトリと Enterprise Manager を同じコンピュータ上に構成している場合は、ポート番号が異なることを確認してください。


キーペアと自己署名付き証明書の生成

keytool プログラムの genkey コマンドを使用して、キーペアを生成できます。

Procedureキーペアと自己署名付き証明書を生成する

  1. JAVA_HOME/bin ディレクトリに移動します。JAVA_HOME は、Java SDK のインストールディレクトリです。

  2. 次のコマンドを入力します。


    keytool -genkey -keyalg RSA -alias CAPS -keystore keystore_filename
  3. 要求に応じて、キーストアパスワードを入力します。

  4. 要求に応じて、次の識別名情報を入力します。

    1. 氏名

    2. 部署名

    3. 組織名

    4. 都市または地域の名前

    5. 州または都道府県の名前

    6. この組織が属する 2 文字の国番号

    7. CN=first_and_last_name、OU=organizational_unit、O=organization_name、L=city_or_locality、ST=state_or_province、C=two_letter_country_code correct は正しいか。

  5. 要求に応じて、キーストアエントリのパスワードを入力します。このパスワードがキーストアパスワードと同じ場合は、Return キーを押します。


    注 –

    キーストアを使用する場合は、JavaCAPS-install-dir/repository/repository/server ディレクトリの sbyn.keystore ファイルを使用することをお勧めします。


認証局からのデジタル署名付き証明書の取得

この手順はオプションです。自己署名付き証明書も利用できます。

Procedure認証局からデジタル署名付き証明書を取得する

  1. 次のコマンドを入力して、証明書署名要求 (CSR) を生成します。


    keytool -certreq -alias CAPS -keyalg RSA -file csr_filename -keystore keystore_filename
  2. CSR を送信して署名を依頼します。

  3. 署名された証明書をファイルに保存します。


    注 –

    キーストアを使用する場合は、JavaCAPS-install-dir/repository/repository/server ディレクトリの sbyn.keystore ファイルを使用することをお勧めします。


証明書のインポート

自己署名付き証明書を使用する場合、この手順はスキップできます。

自己署名付き証明書またはブラウザが認識しない CA によって署名された証明書を使用する場合、サーバーにはじめてアクセスを試みるとき、ダイアログボックスが表示されます。そこで、その証明書を現在のセッションでのみ信頼するか、永久に信頼するかを選択できます。

Procedure証明書をインポートする

  1. 次のコマンドを入力して、証明書をインストールします。


    keytool -import -trustcacerts -alias CAPS -file ca-certificate-filename 
    -keystore keystore_filename

    注 –

    JAVA_HOME/jre/lib/security/cacerts ファイルを変更するには、そのためのアクセス権が必要です。cacerts ファイルにも、使用する証明書をインポートします。

    キーストアを使用する場合は、JavaCAPS-install-dir/repository/repository/server ディレクトリの sbyn.keystore ファイルを使用することをお勧めします。


server.xml ファイルの設定

次に、リポジトリの server.xml ファイルを編集して、SSL サポートを有効にします。

Procedureserver.xml ファイルを設定する

  1. リポジトリが実行中の場合は、リポジトリをシャットダウンします。

  2. テキストエディタを使用して、JavaCAPS-install-dir/repository/repository/server/conf ディレクトリの server.xml ファイルを開きます。

  3. <サービス> 要素内にある、最初の <Connector> 要素をコメントにします。

  4. 2 つ目の <Connector> 要素をコメント解除します。


    <!--  Define an SSL Coyote HTTP/1.1 Connector on port 8443  -->
    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
        port="8443" minProcessors="5" maxProcessors="75"
        enableLookups="true"
        acceptCount="100" debug="0" scheme="https" secure="true"
        useURIValidationHack="false" disableUploadTimeout="true">
    <Factory
        className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory"
        clientAuth="false" protocol="TLS"
        keystoreFile="sbyn.keystore" keystorePass="changeit" />
    </Connector>
  5. server.xml ファイルを保存します。

  6. リポジトリを起動します。

新しい SSL 接続のテスト

この手順で、SSL サポートが正しくインストールされたことを確認します。

Procedure新しい SSL 接続をテストする

  1. 次の URL で、デフォルトのリポジトリサーバーの最初のページをロードします。


    https://localhost:8443/

    https の部分は、ブラウザで SSL プロトコルを使用するはずであることを示します。

    ポート 8443 は、「server.xml ファイルの設定」で SSL コネクタが作成された場所です。

  2. このアプリケーションの最初のロード時に、「新しいサイト証明書」ダイアログボックスが表示されます。「次へ」を選択して、一連の「新しいサイト証明書」ダイアログボックスを進んでいきます。最後のダイアログボックスに到達したら、「完了」を選択します。


    注 –

    NetBeans IDE に接続するために、HTTP を使用するオプションは保持しておくべきです。システム管理者側で HTTP ポートをブロックするべきではありません。


SSL を使用する Enterprise Manager の構成

Enterprise Manager で SSL を使用できるようにするには、次の節で説明するタスクを実行します。


注 –

このトピックの手順では、SSL ポートとしてポート番号 8443 を使用します。「SSL を使用するリポジトリの構成」の手順でも、SSL ポートとしてポート番号 8443 を使用します。リポジトリと Enterprise Manager を同じコンピュータ上に構成している場合は、ポート番号が異なることを確認してください。


キーストアおよびトラストストアの作成

最初のタスクには、Enterprise Manager サーバーがインストールされているコンピュータ上でのキーストアとトラストストアの作成が含まれます。

キーストアとトラストストアの基本情報については、「SSL の概要」を参照してください。

このトピックの例では、パスワードがコマンド行から入力されています。これらのパスワードは省略して、プロンプトが表示されたときに入力するようにできます。

Procedureキーストアおよびトラストストアを作成する

  1. Enterprise Manager サーバーがインストールされているコンピュータに移動します。

  2. Enterprise Manager サーバーが実行中の場合は、Enterprise Manager サーバーをシャットダウンします。

  3. パス変数が、Enterprise Manager サーバーで使用される JavaTM Runtime Environment (JRETM) ソフトウェアを含むように設定します。次に例を示します。


    set PATH="C:\Program Files\Java\jdk1.6.0_06\jre\bin";%PATH%
  4. キーストアおよびトラストストア用のディレクトリを作成します。次に例を示します。


    C:\JavaCAPS6\keystore
  5. 作成したディレクトリに移動し、keytool プログラムを使用して新しいキーストア内に証明書を作成します。


    keytool -genkey -alias mykey -keyalg RSA -keypass changeit -keystore keystore.jks 
    -storepass changeit

    ユーザーの氏名 (名前と名字) を入力するように要求されても、ユーザーの氏名は入力しないでください。その代わりに、コンピュータの完全修飾名を入力します。次に例を示します。


    What is your first and last name?
      [Unknown]:  example.company.com
    What is the name of your organizational unit?
      [Unknown]:  Development
    What is the name of your organization?
      [Unknown]:  Sun Microsystems
    What is the name of your City or Locality?
      [Unknown]:  Monrovia
    What is the name of your State or Province?
      [Unknown]:  California
    What is the two-letter country code for this unit?
      [Unknown]:  US
    Is CN=example.company.com, OU=Development, O=Sun Microsystems, L=Monrovia, 
    ST=California, C=US correct?
      [no]:  yes
  6. 証明書をファイルにエクスポートします。


    keytool -export -alias mykey -file mykey.cer -keystore keystore.jks -storepass changeit

    指定したファイルに証明書が保存されます。

  7. 証明書を新しいトラストストアにインポートします。


    keytool -import -v -trustcacerts -alias mykey -keypass changeit -file mykey.cer 
    -keystore cacerts.jks -storepass changeit

    トラストストアが作成されます。このトラストストアに、インポートされた証明書が含まれます。

ドメイン証明書のインポート

「キーストアおよびトラストストアの作成」の手順を実行したあと、アプリケーションサーバードメインの証明書をトラストストアにインポートします。

さらに、Enterprise Manager サーバー上のファイルを次のように編集します。

このトピックの例では、パスワードがコマンド行から入力されています。これらのパスワードは省略して、プロンプトが表示されたときに入力するようにできます。

Procedureドメイン証明書をインポートする

  1. アプリケーションサーバーがインストールされているコンピュータに移動します。

  2. JavaCAPS-install-dir/appserver/domains/domain-name/config ディレクトリに移動します。

  3. ドメイン証明書をファイルにエクスポートします。


    keytool -export -alias s1as -file ascert.cer -keystore keystore.jks -storepass changeit

    指定したファイルに証明書が保存されます。

  4. このファイルを、「キーストアおよびトラストストアの作成」で作成したディレクトリにコピーします。

  5. ドメイン証明書を、「キーストアおよびトラストストアの作成」で作成したトラストストアにインポートします。


    keytool -import -v -trustcacerts -alias s1as -keypass changeit -file ascert.cer 
    -keystore cacerts.jks -storepass changeit

    証明書がトラストストアに追加されます。

  6. テキストエディタを使用して、JavaCAPS-install-dir/emanager/server/conf ディレクトリの server.xml ファイルを開きます。

  7. <サービス> 要素内にある、最初の <Connector> 要素をコメントにします。

  8. 2 つ目の <Connector> 要素をコメント解除します。keystoreFile 属性と keystorePass 属性を追加します。

    keystoreFile 属性の値を、「キーストアおよびトラストストアの作成」で作成したキーストアの完全修飾名に設定します。keystorePass 属性の値を対応するパスワードに設定します。


    <Connector port="8443"
       maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
       enableLookups="false" disableUploadTimeout="true"
       keystoreFile="C:\JavaCAPS6\keystore\keystore.jks"
       keystorePass="changeit"
       acceptCount="100" debug="0" scheme="https" secure="true"
       clientAuth="false" sslProtocol="TLS" />
  9. server.xml ファイルを保存します。

  10. テキストエディタを使用して、JavaCAPS-install-dir/emanager ディレクトリの startserver バッチファイルを開きます。

  11. javax.net.ssl.trustStore オプションを追加します。値は、「キーストアおよびトラストストアの作成」で作成したトラストストアの完全修飾名に設定します。


    set JAVA_OPTS=-Xmx512m -Djavax.net.ssl.trustStore=C:\JavaCAPS\keystore\cacerts.jks
  12. startserver バッチファイルを保存します。

Application Server のセキュリティーの有効化

最後の構成タスクでは、Sun JavaTM System Application Server のデフォルト HTTP リスナーの 1 つでセキュリティーを有効にします。このリスナーを admin-listener といいます。

ProcedureApplication Server のセキュリティーを有効にする

  1. 管理コンソールにログインします。

  2. 左区画で「構成」ノード、「HTTP サービス」ノード、「HTTP リスナー」ノードの順に展開します。

  3. 左区画で「admin-listener」ノードを選択します。

  4. 「SSL」タブをクリックします。

  5. 「ニックネームの認証」フィールドに s1as と入力します。

  6. 「保存」をクリックします。

  7. 「HTTP リスナーの編集」タブをクリックします。

  8. 「セキュリティー」ラベルの右の「有効化」チェックボックスを選択します。

  9. 「保存」をクリックします。

  10. アプリケーションサーバーを停止して、再起動します。

Enterprise Manager へのログイン

SSL を使用するように Enterprise Manager を構成すると、ログインに使用する URL のスキーマとポート番号が変わります。

Enterprise Manager のユーザー名とパスワードの詳細については、『Java CAPS ユーザーの管理』を参照してください。

ProcedureEnterprise Manager にログインする

  1. Enterprise Manager サーバーを起動します。

  2. サポートされるブラウザで、次の URL を入力します。


    https://hostname:portnumber

    スキーマは、https にしてください。ポート番号は、server.xml ファイルの <Connector> 要素で使用されている値にしてください。次に例を示します。


    https://example.company.com:8443/

    Enterprise Manager Security Gateway 画面が表示されます。

  3. 「ユーザー ID」フィールドに、Enterprise Manager のユーザー名を入力します。

  4. 「パスワード」フィールドに、対応するパスワードを入力します。

  5. 「ログイン」をクリックします。

    Enterprise Manager が表示されます。

WebSphere MQ アダプタでの SSL の使用

次のタスクを実行します。

証明書発行局の作成

次の手順では、WebSphere MQ で提供されるコマンド行ユーティリティーを使用して証明書発行局 (CA) を作成する方法について説明します。

Procedure証明書発行局を作成する

  1. CA のキーリポジトリを作成します。

  2. 次に示すテキストを入力して、ディレクトリを作成し、そのディレクトリにキーリポジトリファイルを作成します。


    C:\> mkdir \myCAdir
    C:\> cd \myCAdir
    C:\myCAdir> runmqckm -keydb -create -db myCA.kdb -type cms

    パスワードの作成を要求されたら、CA のキーリポジトリで使用するパスワードを入力します。

  3. この CA の識別に使用される、自己署名付き CA 証明書を作成します。


    C:\myCAdir> runmqckm -cert -create -db myCA.kdb -type cms -label "myCAcertificate" 
    -dn "CN=myCAName,O=myOrganisation,OU=myDepartment,L=myLocation,C=IN" -expire 1000 
    -size 1024
  4. CA 証明書を myCAcertfile.cer という名前のファイルに抽出します。このファイルは、あとでキューマネージャーとクライアントアプリケーションのキーリポジトリに転送します。


    C:\myCAdir> runmqckm -cert -extract -db myCA.kdb -type cms -label "myCAcertificate" 
    -target myCAcertfile.cer -format ascii

Procedure証明書をキューマネージャーに発行する

各インフラストラクチャー内のキューマネージャーが、適切な識別名 (DN)の固有の証明書を持つようにしてください。DN は、WebSphere MQ ネットワーク内で一意にするようにしてください。

  1. キューマネージャーのキーリポジトリを作成します。


    C:\myCAdir> mkdir \REPOS
    C:\myCAdir> cd \REPOS
  2. 次のコマンドを発行して、キューマネージャーのキーデータベースを作成します。


    C:\REPOS> runmqckm -keydb -create -db myqmgr.kdb -type cms -stash

    パスワードの作成を要求されたら、キューマネージャーのキーリポジトリで使用するパスワードを入力します。

    -stash オプションは、stash ファイルを作成するためのもので重要です。ファイル名は myqmgr.sth になります。キューマネージャーは、このファイルを使用して、ユーザーにパスワードを要求することなくキーリポジトリを開くことができます。

  3. 非公開鍵とともに、キューマネージャーの証明書要求ファイルを生成します。


    C:\REPOS> runmqckm -certreq -create -db myqmgr.kdb -type cms 
    -dn "CN=QMNAME,O=SUN,OU=BI,L=BLR,C=IN" -label "ibmwebspheremqmyqmgr" -file myqmgr.req

    -label パラメータで指定するラベルは、すべて小文字で ibmwebspheremqmyqmgr の形にしてください。これは重要で、そうしないと、キューマネージャーは証明書の検索に失敗します。

  4. 証明書要求ファイル myqmgr.req を、CA ファイルが格納されているディレクトリに転送します。そのあと、次のディレクトリに移動します。


    C:\REPOS> copy myqmgr.req \myCAdir
    C:\REPOS> cd \myCAdir
  5. 次のコマンドを実行して、キューマネージャーの証明書に署名します。


    C:\myCAdir> runmqckm -cert -sign -db myCA.kdb -label "myCAcertificate" -expire 365 
    -format ascii -file myqmgr.req -target myqmgr.cer

    パスワードを要求されたら、CA キーリポジトリのパスワードを入力します。「証明書発行局を作成する」の最初の手順を参照してください。

  6. 署名付きの証明書 (myqmgr.cer) と CA の公開証明書 (myCAcertfile.cer) を元の C:\REPOS に転送します。


    C:\myCAdir> copy myqmgr.cer \REPOS
    C:\myCAdir> copy myCAcertfile.cer \REPOS
    C:\myCAdir> cd \REPOS
  7. CA の公開証明書をキューマネージャーのキーリポジトリに追加します。


    C:\REPOS> runmqckm -cert -add -db myqmgr.kdb -type cms -file myCAcertfile.cer 
    -label "theCAcert"

    パスワードを要求されたら、キューマネージャーのキーリポジトリのパスワードを入力します。

  8. CA によって署名済みの証明書をキューマネージャーのキーリポジトリに受け入れます。


    C:\REPOS> runmqckm -cert -receive -db myqmgr.kdb -type cms -file myqmgr.cer

    パスワードを要求されたら、キューマネージャーのキーリポジトリのパスワードを入力します。前述の手順 1 を参照してください。

ProcedureJava CAPS に証明書を発行する

  1. アプリケーションサーバードメインのデフォルトの keystore.jks への証明書要求を作成します。


    <JavaCAPS>\appserver\domains\<domain_name>\config> runmqckm -certreq -create 
    -db keystore.jks -type jks -dn "CN=Client Identifier,O=SUN,OU=BI,L=BLR,C=IN" 
    -label "ibmwebspheremqmyuserid" -file myappj.req

    パスワードの作成を要求されたら、アプリケーションサーバーのデフォルトのパスワード changeit を入力します。選択された証明書ラベルは、ibmwebspheremqmyuserid です。

  2. 証明書要求ファイル (myappj.req) を、CA のファイルが格納されているディレクトリに転送し、そのディレクトリに移動します。


    <JavaCAPS>\appserver\domains\<domain_name>\config> copy myappj.req C:\myCAdir
    <JavaCAPS>\appserver\domains\<domain_name>\config> cd  C:\myCAdir
  3. 次のコマンドを実行して、アプリケーションの証明書に署名します。


    C:\myCAdir> runmqckm -cert -sign -db myCA.kdb -label "myCAcertificate" -expire 365 
    -format ascii -file myappj.req -target myappj.cer

    パスワードを要求されたら、CA キーリポジトリのパスワードを入力します。「証明書発行局を作成する」の最初の手順を参照してください。

  4. 署名付きの証明書 (myappj.cer) と CA の公開証明書 (myCAcertfile.cer) を元の C:\MYAPPJ に転送します。


    C:\myCAdir> copy myappj.cer <JavaCAPS>\appserver\domains\<domain_name>\config\
    C:\myCAdir> copy myCAcertfile.cer<JavaCAPS>\appserver\domains\<domain_name>\config
    C:\myCAdir> cd <JavaCAPS>\appserver\domains\<domain_name>\config
  5. CA 証明書を Java CAPS キーストアに追加します。


    <JavaCAPS>\appserver\domains\<domain_name>\config> runmqckm -cert -add 
    -db keystore.jks -type jks -file myCAcertfile.cer -label "theCAcertificate"

    パスワードを要求されたら、Java CAPS キーストアパスワードとして changeit と入力します。

  6. CA によって署名された証明書を Java CAPS キーストアに受け入れます。


    <JavaCAPS>\appserver\domains\<domain_name>\config> runmqckm -cert -receive 
    -db keystore.jks -type jks -file myappj.cer

    パスワードを要求されたら、Java CAPS キーストアパスワードとして changeit と入力します。

  7. CA 証明書をトラストストアに追加します。


    <JavaCAPS>\appserver\domains\<domain_name>\config> runmqckm -cert -add 
    -db cacerts.jks -type jks -file myCAcertfile.cer -label "theCAcertificate"

LDAP アダプタと HTTPS アダプタへの OpenSSL ユーティリティーの使用

OpenSSL ユーティリティーは、暗号化アルゴリズム (3DES など)、ハッシュアルゴリズム (SHA1 など)、および公開鍵アルゴリズム (RSA など) の無償の実装です。このユーティリティーには、keytool で提供されない、証明書の署名などの多数のオプションがあります。OpenSSL は、次の Web サイトからダウンロードできます。

http://www.openssl.org

OpenSSL の構築およびインストールの手順に従ってください。

サンプル CA 証明書の作成

この節では、OpenSSL ユーティリティーを使用して CA を作成する方法について、例を使って説明します。ここで生成する CA は、keytoolOpenSSL のどちらで作成したものも、あとで CSR の署名に使用されます。「独自の CA による証明書の署名」を参照してください。

Procedureサンプル CA 証明書を作成する

テスト用にサンプルの CA を生成できます。CA 業者にテスト証明書の署名を依頼する追加の費用を節約するために、サンプルを生成してテスト証明書の署名に使用します。

  1. コマンド行から次の操作を実行します。


    openssl  req  -config c:\openssl\bin\openssl.cnf 
     -new  -x509  -keyout  ca-key.pem.txt -out  ca-certificate.pem.txt  -days  365
    
    Using properties from c:\openssl\bin\openssl.cnf
    Loading ’screen’ into random state: done
    Generating a 1024 bit RSA private key
    .................++++++
    .....................++++++
    writing new private key to ’ca-key.pem.txt’
    Enter PEM pass phrase:
    Verifying password: Enter PEM pass phrase:
    -----
    You are about to be asked to enter information that will be 
        incorporated into your certificate request.
    What you are about to enter is what is called a Distinguished Name 
        or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter ’.’, the field will be left blank.
    -----
    Country Name (2 letter code) []:US
    State or Province Name (full name) []:California
    Locality Name (eg, city) []:Monrovia
    Organization Name (eg, company) []:Sun
    Organizational Unit Name (eg, section) []:Development
    Common Name (eg, your websites domain name) []
        :development.sun.com
    Email Address []:development@sun.com  

    パスワード情報の入力を求められます。

  2. パスワードを入力し、CA の非公開鍵で証明書に署名するためこのパスワードを覚えておきます。

    このコマンドにより、CA の非公開鍵と対応する証明書が作成されます。この証明書は、作成された日付および時刻から数えて 365 日間有効です。

    req コマンドには、プロパティーファイル C:\openssl\bin\openssl.cnf が必要です。デフォルトの config.cnf ファイルは、apps サブディレクトリの下の OpenSSL パッケージにあります。


    注 –

    Windows でこのファイルを使用する場合は、二重バックスラッシュを使うようにパスを変更します。Windows 環境での動作を確認済みの完全な Config.cnf ファイルの例については、「Windows の OpenSSL.cnf ファイルの例」を参照してください。


独自の CA による証明書の署名

この節の例では、keytool を使用して証明書署名要求を作成し、前の節で作成した CA で証明書署名要求に対応する署名付き証明書を生成する方法を示します。この節で示される キーストアおよび証明書署名要求を生成する手順については、「JKS 形式のキーストアの作成」ですでに説明しています。


注 –

keytool のコマンドの詳細については、ここでは説明しません。「JKS 形式のキーストアの作成」を参照してください。


Procedurekeytool を使用して CSR を作成および証明書署名要求に対する署名付き証明書を生成する

  1. コマンド行から次の操作を実行します。


    keytool –keystore clientkeystore –genkey –alias client
    
    Enter keystore password:  javacaps
    What is your first and last name?
    [Unknown]:  development.sun.com
    What is the name of your organizational unit?
    [Unknown]:  Development
    What is the name of your organization?
    [Unknown]:  Sun
    What is the name of your City or Locality?
    [Unknown]:  Monrovia
    What is the name of your State or Province?
    [Unknown]:  California
    What is the two-letter country code for this unit?
    [Unknown]:  US
    Is <CN=development.sun.com, OU=Development, O=Sun, L=Monrovia, ST=California, 
    C=US> correct?
    [no]:  yes
    
    Enter key password for <client>
    (RETURN if same as keystore password):
  2. 証明書署名要求を生成します。


    keytool –keystore clientkeystore –certreq –alias client –keyalg rsa 
    –file client.csr
  3. 署名付き証明書を、関連する証明書署名要求に対して生成します。


    openssl  x509  -req  -CA 
        ca-certificate.pem.txt -CAkey ca-key.pem.txt 
        -in client.csr -out client.cer  -days 365  -CAcreateserial
  4. keytool を使用して、CA 証明書をクライアントキーストアにインポートします。


    keytool -import -keystore clientkeystore -file ca-certificate.pem.txt  
    -alias theCARoot 
    
    Enter keystore password:  javacaps
    Owner: EmailAddress=development@sun.com, CN=development.sun.com, OU=Development,
     O=Sun, L=Monrovia, ST=California, C=US
    Issuer: EmailAddress=development@sun.com, CN=development.sun.com, 
    OU=Development, O=Sun, L=Monrovia, ST=California, C=US
    Serial number: 0
    Valid from: Tue May 08 15:09:07 PDT 2007 until: Wed May 08 
        15:09:07 PDT 2008
    Certificate fingerprints:
    MD5:  60:73:83:A0:7C:33:28:C3:D3:A4:35:A2:1E:34:87:F0
    SHA1: C6:D0:C7:93:8E:A4:08:F8:38:BB:D4:11:03:C9:E6:CB:9C:D0:72:D0
    Trust this certificate? [no]:  yes
    Certificate was added to keystore
  5. keytool を使用して、関連するクライアントエイリアスの署名付き証明書をキーストアにインポートします。


    keytool –import –keystore clientkeystore –file client.cer –alias client
    
    Enter keystore password: javacaps
    Certificate reply was installed in keystore

    注意 – 注意 –

    クライアント証明書に証明書チェーンがない場合、次のエラーが生成されます。


    keytool -import -keystore clientkeystore -file client.cer -alias client
    
    Enter keystore password: javacaps
    keytool error: java.lang.Exception: Failed to establish chain from reply

    このエラーは、CA の証明書が最初にキーストアにインポートされなかったことが原因です。まず CA の証明書をインポートし (手順 4)、それから client.cer ファイル自体をインポートして証明書チェーンを形成します (手順 5)。


    これで、非公開鍵と関連する証明書チェーンをキーストア clientkeystore に備えることができました。これを、クライアント (アダプタ) 認証用のキーストアとして使用できます。ただし、CA 証明書は、接続する予定の Web サーバーの信頼できる証明書ストアにインポートするように注意してください。さらに、Web サーバーをクライアント認証用に構成してください (たとえば、Apache の場合は httpd.conf)。

Windows の OpenSSL.cnf ファイルの例

この節では、Windows で使用できる openssl.cnf ファイルの内容について説明します。ディレクトリは適切に変更する必要があります。


#
# SSLeay example properties file.
# This is mostly being used for generation of certificate requests.
#

RANDFILE        = .rnd

####################################################################
[ ca ]
default_ca    = CA_default        # The default ca section

####################################################################
[ CA_default ]

dir        = G:\\openssl\\\bin\\demoCA    # Where everything is kept
certs        = $dir\\certs                # Where the issued certs are kept
crl_dir    = $dir\\crl                # Where the issued crl are kept
database    = $dir\\index.txt            # database index file.
new_certs_dir    = $dir\\newcerts            # default place for new certs.

certificate    = $dir\\cacert.pem                # The CA certificate
serial        = $dir\\serial                # The current serial number
crl        = $dir\\crl.pem                # The current CRL
private_key    = $dir\\private\\cakey.pem       # The private key
RANDFILE    = $dir\\private\\private.rnd     # private random number file

x509_extensions    = x509v3_extensions    # The extentions to add to the cert
default_days        = 365            # how long to certify for
default_crl_days    = 30            # how long before next CRL
default_md        = md5            # which md to use.
preserve        = no            # keep passed DN ordering

# A few difference way of specifying how similar the request should look
# For type CA, the listed attributes must be the same, and the optional
# and supplied fields are just that :-)
policy        = policy_match

# For the CA policy
[ policy_match ]
countryName            = match
stateOrProvinceName        = match
organizationName        = match
organizationalUnitName    = optional
commonName            = supplied
emailAddress            = optional

# For the ’anything’ policy
# At this point in time, you must list all acceptable ’object’
# types.
[ policy_anything ]
countryName        = optional
stateOrProvinceName    = optional
localityName        = optional
organizationName    = optional
organizationalUnitName    = optional
commonName            = supplied
emailAddress            = optional

####################################################################
[ req ]
default_bits        = 1024
default_keyfile     = privkey.pem
distinguished_name    = req_distinguished_name
attributes        = req_attributes

[ req_distinguished_name ]
countryName            = Country Name (2 letter code)
countryName_min        = 2
countryName_max        = 2

stateOrProvinceName        = State or Province Name (full name)

localityName            = Locality Name (eg, city)

0.organizationName        = Organization Name (eg, company)

organizationalUnitName    = Organizational Unit Name (eg, section)

commonName            = Common Name (eg, your website’s domain name)
commonName_max        = 64

emailAddress            = Email Address
emailAddress_max        = 40

[ req_attributes ]
challengePassword        = A challenge password
challengePassword_min    = 4
challengePassword_max    = 20

[ x509v3_extensions ]

注 –

次の著作権表示が適用されます: Copyright © 2004-2008 The OpenSSL Project. All rights reserved.Copyright © 2005-2008 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/