本文へジャンプ

ソフトウェア > Lotus > Lotus Developer Domain > 製品別技術情報 > Workplace Collaboration Services > 

LDD Today

IBM Lotus WorkplaceでのSSLの利用


Lotus Software
by Kevin Bittner, Test Engineer, IBM
Bill Hankard, Test Engineer, IBM
レベル:中級者
原文の掲載:2004年3月29日

LDD Todayの原文(US)

インデックス
HTTPサーバーでSSLを有効にする
HTTP Configファイルの更新
Lotus WorkplaceでSSKを有効にする
SSL接続の妥当性チェック
まとめ
リソース

SSLを使ってLotus Workplaceをより安全な環境にする方法について学んでみましょう。この記事では、実際に経験に基づいて、Lotus WorkplaceでSSLを使う方法を解説していきます。

SSL (Secure Sockets Layer)は機密情報をWebや他のネットワークで送信するためのプロトコルです。SSL ではプライベート・キーを使用してデータを暗号化した上でデータを送信します。データを受け取る側では、同じプライベート・キーを使用してデータを復号化します。多くのケースにおいて、SSLはセキュリティーを確保していく上で重要なコンポーネントです。(SSL接続を行うサイトでは、URLがHTTPではなく、HTTPSであることに気が付いているかと思います。)

Lotus Workplace 1.1の出荷前のテスト作業の一部として、私たちはSSLセキュリティーの設定および検査を行い、Lotus Workplaceがセキュアーな環境で正常に通信できるかどうかを確認しました。その結果、Lotus Workplaceでは、SSLありなしに関わらず同じように通信できることを確認しました。テストではSSLを有効にした状態でスクリプトを走らせ、テストを行いました。そして、SSLなしの状態でも走らせます。そのようにテストを行うために、Lotus Workplaceの完全なSSL環境をセットアップしました。

この記事では、実際のセットアップの経験をレビューします。紹介する手順は、Lotus Workplaceのインフラストラクチャーを受け持つ部門が作った手順に基づいています。最初に、HTTPサーバーでSSLを有効にする方法を説明します。それから、Lotus WorkplaceでSSLを有効にする方法を解説します。そして、動作確認のチェックを行います。この記事の目標は、経験を積んだシステム管理者(特にSSLの経験者)がLotus WorkplaceでSSLをセットアップすることができるようにすることです。

この記事ではWindows 2000サーバー上でセットアップした経験に基づいています。これらは、ファイル名やファイルの場所に多少の違いはあるものの、AIXやLinuxにも適用可能です。(違いについては、各プラットフォームのヘルプを参考にしてください。)


HTTPサーバーでSSLを有効にする
Lotus WorkplaceでSSLをセットアップする最初のステップは、お互いに認証をおこなうためのサーバー用キーの作成で、IBMのikeymanツールを使ってこれを行うことができます。このツールはLotus Workplaceに同梱されているIBM HTTPサーバーにインストールされています。

新規キーの作成
以下のステップにしたがってキーおよび関連するデータベースの作成を行います。(注意: これらの手順は、Lotus Workplaceがセキュアーな環境にないことを前提としています。Lotus Workplaceを既存のSSL環境と統合するには、本記事の「Lotus Workplaceサーバーを既存SSLキー・データベースと統合する」をご覧ください。

  1. ikeymanユーティリティーを起動します。Windowsのスタート・メニューから、プログラム - プログラム - IBM HTTP Server - Start Key Management Utilityを選択します。これで、Key Managementメニューが開きます。
  2. 2. 新規にキー・データベース・ファイルを作成します。これを行うには、Key Database File - Newを選択し、以下の情報を入力します。
    • キー・データベース・タイプ: CMSキー・データベース
    • ファイル ファイル名: key.kdb
    • 場所: <IHS ROOT>\ssl\keys
    図1. 新規キー・データベース・ファイルを作成する

  3. OKを押して、新規キー・データベース・ファイルを保存します。
  4. キー・リングのパスワードを選択します。これを行うには、再確認のためのパスワードを入力します。
  5. (任意) Set expiration time?(有効期限を設定する)のチェックボックスを選択して、キー・リングのパスワードの有効期間日数を入力します。(期間を過ぎるとパスワードを更新しなければなりません。)デフォルト値は60日です。(このテストではこの設定を使用しました。)
  6. Stash the password to a file?(パスワード情報をファイルに格納する)のチェックボックスを選択します。

    図2. キー・リングのパスワード情報を入力する

  7. OKをクリックします。すると、パスワードが暗号化され、key.sthファイルに格納されたことを示すダイアログボックスが表示されます。ダイアログボックスを閉じます。
  8. Windowsのエクスプローラーを使って、以下の4つのファイルが<IHS root>/ssl/keysにあるかを確認します。
    • key.kdb
    • key.rdb
    • key.sth
    • key.crl
自己署名のデジタル証明書の作成
自己署名のデジタル証明書を作成するには、以下の手順で行います。
  1. Key Managementのメニューで、Signer Certificatesをクリックします。(このオプションは、CAのリストのすぐ上にあります。) そして、Personal Certificatesを選択します。まだ、個人証明書を作成していない場合は、空のリストが表示されます。
    図3. 個人証明書
  2. 新規にキー・データベース・ファイルを作成します。これを行うには、Key Database File - Newを選択し、以下の情報を入力します。
    • Key Label: どのような名前でも構いません。この例では、self-signedとしています。
    • Version: X509 V3を選択
    • Key Size: 1024を選択
    • Common Name: Webサーバー名を入れます。この名前は、ブラウザーで入力するサーバー名と一致している必要があります。例えば、wwwやw3の名がついたアドレスでサーバーへアクセスされる場合には、この名前がCommon Nameの中にある必要があります。例えば、www.sales.workplace.acme.comです。
    • Organization: 組織名を入力します。例えば、Acme Sales Teamです。
    • Country: 国名を入れます。
    • Validity Period: 証明書が有効である期間を指定します。証明書の有効期間に関する社内のポリシーを確認し、それに準拠するようにします。デフォルト値は365日(1年)です。

    図4. 自己署名の証明書情報の入力
  3. このダイアログボックスの他のフィールドは任意のものです。しかしながら、可能な限り設定することを推奨します。その上でOKをクリックすると、リストの中に新規に作成されたデジタル証明書が表示されていることが確認できます。
    図5. 新規証明書
  4. Key Managerユーティリティーを閉じます。
Lotus Workplaceサーバーを既存SSLキー・データベースと統合する
この前のセクションでは、Lotus Workplace用の新規SSLキーの作成について話をしました。このセクションでは、Lotus Workplaceを既存のSSL環境で使う場合について説明します。
  1. HTTPサーバーの<IHS_ROOT>\sslフォルダーへ行き、keysというフォルダーを作成します。(<IHS_ROOT>はデフォルトではC:\Program Files\IBMHttpServerにあります。WebSphere Application Serverをインストールして、デフォルト値を選択した場合には、作成する新規フォルダーはC:\Program Files\IBMHttpServer\ssl\keysになります。)
  2. 以下のファイルを、現在のSSLキー・データベース管理者から入手します。(キーとデータベースの作成にはikeymanが使われていることを前提としています。) : <filename>.sth、<filename>.kdb、<filename>.rdb、<filename>.crl、ファイル名は致命的なポイントとはなりません。Ikeymanがファイルを識別するのは拡張子になります。
    • <filename>.kdb
      キー・データベース・ファイルです。ここには個人証明書、個人証明書要求、署名者の証明書が格納されています。
    • <filename>.sth
      は格納用ファイルです。ここには、分かりにくい形でキー・データベースのパスワード情報が格納されています。ファイルの幹となる部分は、関連するKDBファイルと同じものです。また、もし存在する場合には、個人(秘密)キーも格納されます。
    • <filename>.rdb
      要求データベース・ファイルです。KDBキー・データベースを作成すると、自動的にこのデータベースは作成されます。このファイル名の幹の部分は、関連するKDBファイルと同じものです。このファイルには、まだ処理されていない証明書の要求や、Certificate Authority (CA)からまだ戻ってきていない証明書の要求が入っています。CAから証明書が戻ってくると、RDBファイルは証明書の要求と合致するものがないかパブリック・キーをもとに探し、ヒットした場合は証明を受け取り、その証明書の要求はRDBから削除されます。合致するものが見つからない場合には、証明書の返信に対して拒否します。証明書には、Common Name、組織名、住所(Street Address)や要求日時などの情報がパブリック・キーやプライベート・キーと共に格納されています。
    • <filename>.crl
      証明書執行リストファイルです。このファイルには通常、何らかの理由で失効した証明書のリストが含まれています。しかし、ikeymanは失効した証明書リストに対しては何らサポートをしていません。従って、空になっています。
 
上に戻る
 
HTTP Configファイルの更新
次に、SSLを使用するには、HTTPサーバー設定ファイルを更新する必要があります。以下の手順は、IBM HTTPサーバーに合わせて記述されています。異なるサーバーを使用している場合には、製品のヘルプを参考にして、SSLを実装する正しい方法を調べてください。

  1. httpd.confファイルを編集する前にバックアップを取っておき、エラーが起きたときに元に戻せるようにしておきます。
  2. 適当なテキスト・エディターを使ってhttpd.confファイルを開きます。(<IHS_ROOT>\confフォルダーにあります。)
  3. 以下の行を、ファイルの最後に加えます。
    LoadModule ibm_ssl_module modules/IBMModuleSSL128.dll
    Listen 80
    Listen 443
    FileETag none
    <VirtualHost HOST_MACHINE:443>
    ServerName HOST_MACHINE
    Keyfile "c:\program files\ibmhttpserver/ssl/keys/key.kdb"
    SSLV2Timeout 100
    SSLV3Timeout 1000
    SSLEnable
    SSLClientAuth none
    </VirtualHost>
    SSLDisable
    Keyfile "c:\program files\ibmhttpserver/ssl/keys/key.kdb"
    SSLV2Timeout 100
    SSLV3Timeout 1000

    HOST_MACHINEの所には、完全修飾のホスト名が入ります(例えば、www.sales.workplace.acme.com)。そして、キー・ファイルのパス名とファイル名が記述している部分には、「HTTPサーバーでSSLを有効にする」のところで述べたように、前にセットしたパス名とファイル名を記述します。
  4. 次に、Afpaから始まるエントリーを全てコメント・アウトします。コメント・アウトには#を使用します。このサーバーのhttp.confファイルには、3カ所あります。
    #AfpaEnable
    #AfpaCache on
    #AfpaLogFile "C:\IBMHttpServer/logs/afpalog" V-ECLF
    これらのファイルは、Fast Response Cache Acceleratorを制御するために使われます。この命令の詳細については、Using AFPA Directives(US)のページをご覧ください。
  5. この変更作業が終了したら、httpd.confファイルを保存して閉じます。そして、HTTPサーバーを再起動させて、変更内容が反映されるようにします。これをWindows環境で行うには、サービスの画面を開き、IBM HTTP Serverのサービスを再起動します。

HTTPサーバーを再起動後、ブラウザーでhttp://locahostを入力して、サーバーが正常に動作しているかを確認します。IBM HTTP Server設定画面が表示されたら正常であることを示しています。表示されない場合は、httpd.confに加えた変更に誤りがないか確認してください。(特に、Afpaから始まる行のコメント・アウト) それでも解決しない場合は、ヘルプを参考にしてください。
 
上に戻る
 
Lotus WorkplaceでSSKを有効にする
Lotus WorkplaceでSSLを有効にするには、Lotus Workplaceが稼働しているWebSphere Application ServerをSSLで動作するように設定する必要があります。これを行うには、WebSphere Application Server Administration Consoleに管理者としてログインし、以下の作業を行います。(通常、Administration Consoleのアドレスは、http://servername.yourco.com:9090/adminです。)

  1. Administration Consoleで、NavigatorにあるEnvironmentを選択します。そして、Virtual Hostsを選択します。
  2. default_hostを選択して、Additional Propertiesの下のHost Aliasesを選択します。
    図6. ホストのエイリアス


  3. ewをクリックして以下の情報を入力します。

    Host Name: *
    Port: 443

    これは、Administration ServerがデフォルトのSSLポート(443)を開いて有効にするためのものです。
  4. 新規ホストのエイリアスを有効にするするために、Applyをクリックし、そしてSaveをクリックします。再度、Saveをクリックして、新規情報をWebSphere Application Serverの設定に追加します。
  5. WebSphere Application Serverに保存した設定ファイルを読み込ませ、Web Server Plug-inを更新するには、NavigatorからEnvironmentを選択し、そして、Update Web Server Plug-inを選択します。
  6. OKをクリックして、ログアウトします。
  7. ここで、Administration Consoleの中ではなく、その外において手動で多少の調整をしなくてはなりません。これには、WebSphere Application Serverを落としておく必要があります。これを行うには、Windowsのスタート・メニューから、プログラム - IBM WebSphere - Application Server 5.0 - Stopを選択してサーバーを停止させます。(コマンド・ウィンドウからstopServerコマンドを実行することで、サーバーを停止させることもできます。) これらの作業については、WebSphere Application Serverの管理者が手伝って作業を行ってくれるでしょう。
  8. この時点で、いくつかの設定ファイルを編集して、SSL認証が有効になるようにしなければなりません。最初のファイルは、plugin-cfg.xmlです。このファイルは、<WAS_ROOT>ディレクトリーにあり、デフォルトではc:\WebSphere\AppServerのサブ・ディレクトリー、config\cellsの配下です。エディターでファイルを開き、esiEnableという文字列を検索します。この文字列は必ずあり、値はfalseに設定されているはずです。値がセットされていて、その値がtrueの場合は、falseに設定します。以下の行を加えます。

    <Property name="esiEnable" value="false"/>

    この行は、<Config>と</Config>で挟まれた所に置く必要があります。
  9. WebSphere Portal ServerもまたSLLポートをリッスンできるようにしておく必要があります。最も手早く簡単な方法は、configservices.propertiesを編集する方法です。ファイルは、\WebSphere\PortalServer\shared\app\config\services\にあります。このファイルの中にある、次の2行の内容を確認し、異なっていれば変更します。

    redirect.login.ssl = true
    host.port.https = <alias_port>

    <alias_port>には、Step 3で設定して仮想ホストのエイリアスで使われるポート番号です。パラメーターのredirect.logout.sslはfalseにセットしたままにしておくこともできます。
  10. 次のステップでは、同じ変更内容を複数のファイルに行う作業が含まれています。これらのファイルはPortal ServerやWebSphere Portal Content Publisher (WPCP)の一部のファイルおよび、それらの上で動作するEnterprise Applicationsの一部です。この変更を行うと、保護されたポータルのURLでHTTP通信が行えるようになります。どのケースでも、調整が必要とされるファイルは、web.xmlと名がついているものです。そのファイルは以下のディレクトリーにあります。
    • <WAS_ROOT>\installedApps\<cell-name>\
      wps.ear\wps.war\WEB-INF\
    • <WAS_ROOT>\installedApps\<cell-name>\
      WPCP_Authoring.ear\pcm.war\WEB-INF\
    • <WAS_ROOT>\installedApps\<cell-name>\
      WPCP_Runtime.ear\wpcpruntime.war\WEB-INF\
    • <WAS_ROOT>\config\cells\<cell-name>\
      applications\wps.ear\deployments\wps\wps.war\WEB-INF\


    注意: <WAS_ROOT>は、デフォルトではc:\WebSphere\AppServer、そして<cell-name>はホスト・サーバー名のCommon Nameあるいは短縮名です。例えば、acmesalesです。各ファイルにおいて、<transport-guarantee>で囲まれた値がNONEと設定されている場合は、CONFIDENTIALと設定します。例を示します。

    <security-constraint id="SecurityConstraint_1">
    <web-resource-collection id="WebResourceCollection_1">
    <web-resource-name></web-resource-name>
    <url-pattern>/myportal/*</url-pattern>
    <http-method>DELETE</http-method>
    <http-method>GET</http-method>
    <http-method>POST</http-method>
    <http-method>PUT</http-method>
    </web-resource-collection>
    <auth-constraint id="AuthConstraint_1">
    <description></description>
    <role-name>All Role</role-name*gt;
    </auth-constraint>
    <user-data-constraint id="UserDataConstraint_4">
    <transport-guarantee>CONFIDENTIAL
     </transport-guarantee>
    // replace NONE with CONFIDENTIAL
    </user-data-constraint>
    </security-constraint>

    この設定は各ファイルにおいて一度だけあります。但し、WPCP_Runtimeディレクトリーのweb.xmlについては2箇所あります。2つ目の変更をしないと、SSLとHTTPSが動作しなくなります。
JSPファイルの編集
WebSphere PortalをコントロールするJSPファイルでSSLを有効にする必要があります。これを行うには、全部で14JSPファイルを編集する必要があります。全てのファイルは、<WAS_ROOT>\installedApps\<cell-name>\wps.ear\wps.war\themes\htmlの配下にあります。

Tip: Windowsエクスプローラーの検索機能を使用する場合には、ssl=の文字列を含むファイルを全て見つけ出すのに、このディレクトリー配下を検索します。14ファイルがヒットするはずです。

  1. 以下のファイルを開いて編集を行います。
    • <WAS_ROOT>/installedApps/<cell-name>/wps.ear/
      wps.war/themes/html/ToolBarInclude.jsp
    • <WAS_ROOT>/installedApps/<cell-name>/wps.ear/
      wps.war/themes/html/Admin/ToolBarInclude.jsp
    • <WAS_ROOT>/installedApps/<cell- ame>/wps.ear/
      wps.war/themes/html/AdminLeftNavigation/ToolBarInclude.jsp
    • <WAS_ROOT>/installedApps/<cell-name>/wps.ear/
      wps.war/themes/html/Corporate/ToolBarInclude.jsp
    • <WAS_ROOT>/installedApps/<cell-name>/wps.ear/
      wps.war/themes/html/Engineering/ToolBarInclude.jsp
    • <WAS_ROOT>/installedApps/<cell-name>/wps.ear/
      wps.war/themes/html/Finance/ToolBarInclude.jsp
    • <WAS_ROOT>/installedApps/<cell-name>/wps.ear/
      wps.war/themes/html/Science/ToolBarInclude.jsp
    • <WAS_ROOT>/installedApps/<cell-name>/wps.ear/
      wps.war/themes/html/workplace/Banner.jsp
    • <WAS_ROOT>/installedApps/<cell-name>/wps.ear/
      wps.war/themes/html/workplace/ToolBarInclude.jsp
    • <WAS_ROOT>/installedApps/<cell-name>/wps.ear/
      wps.war/themes/html/workplace-teamspace/Banner.jsp
    • <WAS_ROOT>/installedApps/<cell-name>/wps.ear/
      wps.war/themes/html/workplace-teamspace/ToolBarInclude.jsp
    • <WAS_ROOT>/installedApps/<cell-name>/wps.ear/
      wps.war/themes/html/workplace-webconference/Banner.jsp
    • <WAS_ROOT>/installedApps/<cell-name>/wps.ear/
      wps.war/themes/html/workplace-webconference/
      ToolBarInclude.jsp
    • <WAS_ROOT>/installedApps/<cell-name>/wps.ear/
      wps.war/themes/html/workplace-admin/ToolBarInclude.jsp
  2. これら全てのファイルにおいて、ssl=falseと設定されたインスタンスがひとつのみある必要があります。各ケースでは、trueにリセットします。シンプルな検索で該当箇所はすぐ見つかると思います。アンカー内はこのようになるはずです。<a href='<wps:url home="public" screen="Login"/>'>
  3. Loginリンクを見つけたら、ssl=の属性をtrueに変更します。例を示します。
    <%-- login button --%>
    <wps:if loggedIn="no" notScreen="Login">
    <td valign="middle">
    <a href='<wps:url home="public" ssl="true" screen="Login"/>'>
    <img src='<wps:urlFindInTheme file="nav_login.gif"/>'
    alt='<wps:text key="link.login" bundle="nls.engine"/>'
    border="0" align="absmiddle" width="25" height="25"
    title='<wps:text key="link.login" bundle="nls.engine"/>'>
    </a>
    </td>
    </wps:if>
  4. 全てのJSPファイルを編集し終わったら、WebSphere Application Serverが使用するコンパイル済みバージョンを削除する必要があります。これを行うには、WebSphere Application Serverのキャッシュ・ディレクトリーである<WAS_ROOT>/temp/<node_name>/WebSphere_Portal/wpsへ移動し、wps/warのサブ・ディレクトリーを削除します。WebSphere Application Serverが再起動すると、再度JSPファイルをコンパイルして、ディレクトリーが再作成されます。今回作成されるのは、SSLに対応した設定がされます。
  5. Windowsのスタート・メニューからプログラム - IBM WebSphere - Application Server 5.0 - Startを選択して、サーバーを再起動させます。(あるいは、startServerコマンドを、コマンド・ウィンドウから入力して実行します。) これもまた、サーバー管理者の手助けによりこのステップを行います。
  6. Document ManagerポートレットがSSL経由でアクセスできるように、URLを更新する必要があります。これを行うには、Lotus Workplaceに管理者としてログインし、Administration - Portlets - Manage portletを選択します。そして、Document Managerポートレットを選択し、レンチのアイコンをクリックします。(パラメーターの変更) Edit Parametersフィールドで、パラメーター pdmWpcpUrlを追加します。そして、値をhttps://<servername>/wps/wcpに設定します。プラスのサインをクリックして、パラメーターを追加し、ログアウトします。
  7. WebSphere Application Server Administration Consoleに管理者としてログインします。そして、Enviroment - Update Web Server Plug-inを選択して、Web Server Plug-inを再生成します。こうすることで、様々なXMLやJSPファイルに対して加えた変更を、サーバーが見えるようになります。
  8. OKをクリックしてログアウトします。
全サーバーの再起動
ここまで行った変更を確実に反映させるために、Lotus Workplaceに関連するすべてのサーバーを再起動させる必要があります。製品マニュアルに記載されているガイドラインに従って、WebSphere Application Server、WebSphere Portalサーバー、Lotus Workplaceサーバー、HTTPサーバーの順に停止、開始を行います。
 
上に戻る
 
SSL接続の妥当性チェック
希望するレベルまでSSLの設定を完全に行ったら、SSLの接続性チェックを行う簡単なステップに進みます。最初に、HTTPサーバーへSSLポートである443でつなげてみます。これには、以下のURLを使います。

https://<server name>:443
<server name>の部分には、HTTPのホスト名が入ります。このURLでは、httpにsが加わっていることと、ポート番号443が指定されていることに気が付くと思います。以下のような画面が表示されることと思います。

図7. セキュリティー警告画面


この画面はブラウザーが持つ標準的な画面で、ブラウザー側で持っている信頼している証明書リストと、現在アクセスしているサーバーが使用している証明書を付き合わせて検証している画面です。この画面が出てくることは、SSLが使われていることの証明です。Yesをクリックして先に進みます。

HTTPのサーバーのWelcomeページが表示されたら、ブラウザーのタスク・バーを見てください。鍵のアイコンが表示されているはずです。これは、Internet Explorerでの例です。

図8. 鍵アイコンの表示

鍵アイコンが閉じられると、そのサイトは安全になります。そして、SSLがHTTPサーバーで動作していることを示します。

次に、Lotus Workplaceをチェックします。Lotus Workplaceセッションを開始して、Log Inリンクをクリックします。すると、セキュリティー警告画面が表示される場合があります。その場合には、Yesをクリックして先に進みます。この時点で、ブラウザーに表示されるURLを確認します。HTTPの先頭文字がHTTPSに変わっていること、また鍵印が表示されていることを確認します。これで、Lotus Workplaceの基本的操作とログインの操作において安全が確保されていることが分かります。

ログインすると、Lotus Workplace Collaborative Learningがインストールされている場合には、Learningページを選択してURLを確認します。Lotus Workplace Collaborative Learningは別サーバーで運用されていますので、ページがセキュアーな状態になっているか確認する必要があります。再度、URLはHTTPSから始まり、そして鍵のアイコンが表示されているはずです。これで、Lotus Workplaceの基本的なSSLの設定は終了です。
 
上に戻る
 
まとめ
Lotus WorkplaceでSSLを設定する方法とアドバイスがご理解いただければ幸いです。SSLはサイトのセキュリティーを確保する上で重要なもので、多くの管理者はLotus WorkplaceをSSL環境で動作させたいと考えているようです。私たちの経験では、ちょっとした労力でLotus WorkplaceでSSLを使ってセキュリティーを確保でき、企業の機密情報を守ることができることが分かりました。
 
上に戻る
 
リソース



著者について(原文のまま)
Kevin Bittner is a Test Engineer for the Lotus Engineering Test (LET) team. He started with Lotus in the early 1990's as a 1-2-3/Unix support analyst, and has been involved in customer support for most of his career at Lotus.
Bill Hankard is a Test Engineer for the Lotus Engineering Test (LET) team.
 
上に戻る