oracle advanced...

40
Oracle Advanced Security による による による による 暗号化設定手順 暗号化設定手順 暗号化設定手順 暗号化設定手順 Oracle8i Oracle Internet Application Server 間の 間の 間の 間の セキュリティ セキュリティ セキュリティ セキュリティ(WindowsNT での設定 での設定 での設定 での設定) Creation Date: Sep 23, 2000 Last Update: Oct 24, 2000 Version: 1.1

Upload: trinhtuyen

Post on 22-Mar-2018

242 views

Category:

Documents


10 download

TRANSCRIPT

Page 1: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

Oracle Advanced Securityによるによるによるによる

暗号化設定手順暗号化設定手順暗号化設定手順暗号化設定手順

Oracle8iとととと Oracle Internet Application Server間の間の間の間のセキュリティセキュリティセキュリティセキュリティ(WindowsNTでの設定での設定での設定での設定)

Creation Date: Sep 23, 2000

Last Update: Oct 24, 2000

Version: 1.1

Page 2: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 2

1. はじめにはじめにはじめにはじめにE-Businessの発展とともに、インターネットは重要な情報共有インフラストラクチャと

なっています。しかし、インターネットは不特定多数が参加するネットワークであるため、

特にビジネスでの利用においてはネットワークを流れるデータの隠蔽、改ざん防止、発信

者の確認といったセキュリティが重要となってきます。

インターネットを利用したシステムとしては、近年、クライアント(Web ブラウザ)、ア

プリケーションサーバ、データベースという 3 層構造のシステムが増えてきています。こ

のうちクライアントである Web ブラウザとアプリケーションサーバ(Web Server)間のセ

キュリティに関しては SSL(Secure Socket Layer)という Netscape Communications社が

開発した暗号化形式がデファクトスタンダードとして利用されています。

今回はこのような 3 層構造システムにおけるアプリケーションサーバとデータベース間

のセキュリティの設定について解説します。なお、アプリケーションサーバとして Oracle

Internet Application Server 8i R1.0.1(以下 Oracle iASと表記)を、データベースとして

Oracle8i R8.1.6を利用します。また、プラットホーム OSとしては WindowsNT4.0を利

用し、NT 固有の問題にも触れていきます。なお、UNIX を用いる場合でも各ユーティリ

ティ・アプリケーションの起動方法は異なりますが、基本的に設定方法、設定内容は同一

です。

2. Oracle Advanced SecurityOracle8iでは Enterprise Editionの有償オプションである Oracle Advanced Security

(Advanced Security Option、以下 ASOと表記)により、データの暗号化や改ざんの防止、

外部認証サーバーとの連携、シングルサインオンといったセキュリティ・ソリューション

を提供しています。ASOは米国商務省連邦情報処理規格の暗号モジュール用セキュリティ

要件である FIPS140 のレベル 2 に対応しています。また、そのほかにも Common

Criteria(ISO/IEC15408)、Orange Book、ITSECなど 12種類のセキュリティ評価基準に

対応しています。

一般的にネットワーク・セキュリティは、データの隠蔽、データの改ざん防止、そして

認証の 3つに分類することができます。

データの隠蔽とは通信データを暗号化することです。通常の通信データは、スニファー

と呼ばれるツールを利用することで、簡単に内容を見ることができます。個人情報やクレ

ジットカード番号などの機密情報をインターネット上でやり取りするには通信データの暗

号化は必須事項といえます。

データの改ざん防止は第 3 者が通信途中でのデータを書き換えることを防ぐ処置で、符

号化という技術を利用しています。符号化とはハッシュ関数を用いて送信データから短い

ダイジェストを作成することです。異なるデータのダイジェストが同一になる確率は十分

Page 3: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 3

に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

たダイジェストが一致すればそのデータはネットワークの途中で書き換えられていないと

いうことになります。

認証にはアクセス制御や、データを送信するとき送信先が本当に正しいところかどうか、

また受信したデータが本当に正しい送信者から送られてきたものかどうかということを確

かめる正当性の検証などが含まれます。パスワード認証はアクセス制御の代表的な例です。

また、デジタル証明書(電子署名)は双方に利用することができます。

ASOでは共通鍵暗号方式のNativeASO、公開鍵暗号方式のSSLという2つの方法でネッ

トワーク・セキュリティを提供しています。(図 2-1)ただし、米国で暗号の 2重利用が制限

されているため、ASOでは同時に両方の暗号方式を利用することはできません。それぞれ

の方法が利用できるアルゴリズムを表 2-1に示します。

クライアント(Webブラウザ)

アプリケーションサーバ(Oracle iAS)

データベース(Oracle8i)

http over SSL Encrypted Net8(NativeASO)

orNet8 over SSL

図図図図 2-1::::ASOによる暗号化による暗号化による暗号化による暗号化

アルゴリズム NativeASO SSL

暗号化RC4(40bit, 56bit, 128bit)

DES(40bit, 56bit)

RC4(40bit, 128bit)

DES(40bit, 56bit)

3DES(Triple-DES)

符号化 MD5MD5

SHA

表表表表 2-1:::: ASOで利用できる暗号化、符号化アルゴリズムで利用できる暗号化、符号化アルゴリズムで利用できる暗号化、符号化アルゴリズムで利用できる暗号化、符号化アルゴリズム

RC4

Rivest Code #4の略で、RSA開発者の Ronald Rivestによって開発されたアルゴ

Page 4: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 4

リズムです。RSA Data Security社が特許を持っています。

DES

Data Encryption Standardの略。IBM社によって開発された秘密鍵暗号化アルゴ

リズムで、1977 年にアメリカ政府標準技術局(NIST)によって連邦情報処理基準に

採用されました。3DESは DESを 3回繰り返すというもので、バンキングにおけ

る暗号化の ANSI標準となっています。

MD5

RSA開発者のRonald Rivestらによって開発された 128bitのダイジェストを作成

するハッシュ関数です。RFC 1321として IETFで標準化されています。

SHA

160bitのダイジェストを作成するため、MD5より安全性が高いといわれている

ハッシュ関数です。1995 年に米国標準技術局(NIST)によってアメリカ政府の標準

ハッシュ関数として採用されています。

このドキュメントは、まず NativeASOおよび SSLを用いてクライアントもしくはアプ

リケーションサーバとデータベース間の暗号化の設定手順について解説します。クライア

ントとアプリケーションサーバで共通の設定は 3 章、4 章で解説しています。またアプリ

ケーションサーバ(Oracle iAS)で別途必要な設定を 5章で解説しています。そして、6章で

例(週報システム)を用いて実際の設定をおこないます。

3. NativeASOでのセキュリティの設定でのセキュリティの設定でのセキュリティの設定でのセキュリティの設定クライアントまたはアプリケーションサーバ

データベース(Oracle8i)

Encrypted Net8(NativeASO)

図図図図 3-1::::NativeASOでの暗号化での暗号化での暗号化での暗号化

Page 5: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 5

手順手順手順手順

1. データベース側 暗号化の設定(3-1-1)

2. データベース側 符号化の設定(3-1-2)

3. データベース側 リスナーの設定(3-1-3)

4. クライアント側 暗号化の設定(3-2-1)

5. クライアント側 符号化の設定(3-2-2)

6. クライアント側 サービス・ネーミングの設定(3-2-3)

実際に NativeASOを利用して Net8通信を暗号化、符号化する設定をおこなっていきま

す。設定には Net8 Assistantを利用します。設定内容はテキストファイルとして出力され

るので、設定後テキストエディタなどで設定の確認をおこなうことができます。設定の出

力ファイルはデフォルト時には、%ORACLE_HOME%¥network¥adminに保存されます。

具体的な設定の手順は以下のとおりです。

3.1. サーバ側の設定サーバ側の設定サーバ側の設定サーバ側の設定

3.1.1. 暗号化の設定暗号化の設定暗号化の設定暗号化の設定(sqlnet.ora)

サーバ側で利用する暗号化アルゴリズムを選択します。Net8 Assistantを立ち上

げ、左側のツリーから「Net8の構成」→「ローカル」→「プロファイル」を選択

します。次に右上の選択肢から「Oracle Advanced Security」を選択し、「暗号化」

タグをクリックします。すると図 3-2 のような画面となるのでここでそれぞれの

項目を設定します。

Page 6: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 6

図図図図 3-2::::ASOによるサーバ側暗号化の設定画面によるサーバ側暗号化の設定画面によるサーバ側暗号化の設定画面によるサーバ側暗号化の設定画面

暗号化

「SERVER」または「CLIENT」が選択できます。ここではサーバ側の設定をお

こなうので、「SERVER」を選択します。

暗号化タイプ

暗号化のレベルです。表 3-1の 4つのレベルから選択できます。

レベル 説明

適用(accepted) 暗号化通信が可能なレベル

拒否(rejected) 暗号化通信が不可能なレベル

要求(requested) 暗号化通信を要求するレベル

必要(required) 暗号化通信が必須なレベル

表表表表 3-1:暗号化、符号化レベル一覧:暗号化、符号化レベル一覧:暗号化、符号化レベル一覧:暗号化、符号化レベル一覧

サーバ側、クライアント側それぞれの暗号化タイプの組み合わせにより、実際

Page 7: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 7

に暗号化がおこなわれるかどうかが決まります。組み合わせによる実際の動作を

表 3-2に示します。

クライアント

適用 拒否 要求 必要

適用 暗号化なし 暗号化なし 暗号化あり 暗号化あり

拒否 暗号化なし 暗号化なし 暗号化なし 接続失敗

要求 暗号化あり 暗号化なし 暗号化あり 暗号化あり

サーバ

必要 暗号化あり 接続失敗 暗号化あり 暗号化あり

表表表表 3-2:暗号化、符号化のレベルによる動作:暗号化、符号化のレベルによる動作:暗号化、符号化のレベルによる動作:暗号化、符号化のレベルによる動作

暗号化シード

暗号を利用する際に必要な乱数のシードを設定します。10 文字から 70 文字の

文字列を指定できます。ここに長くランダムな文字列を入力するほど、強力なキー

が生成されます。

メソッド

利用する暗号化アルゴリズムを選択します。複数選択することもできますが、

サーバ側で上位に指定されているアルゴリズムから優先的にに利用されます。

設定後ネットワーク構成の保存をおこなうと、sqlnet.oraファイルに以下のよう

な設定が加わります。

# 暗号化に利用可能なアルゴリズムSQLNET.ENCRYPTION_TYPES_SERVER= (DES, RC4_40)

# 暗号化のレベル設定SQLNET.ENCRYPTION_SERVER = requested

# 乱数のシードSQLNET.CRYPTO_SEED = 4fhfguweotcadsfdsafjkdsfqp5f201p45mxskdlfdasf

3.1.2. 符号化の設定符号化の設定符号化の設定符号化の設定(sqlnet.ora)

利用する符号化アルゴリズムを選択します。Net8 Assistantの左側のツリーから

「Net8の構成」→「ローカル」→「プロファイル」を選択します。次に右上の選

択肢から「Oracle Advanced Security」を選択し、「整合性」タグをクリックします。

すると図 3-3のような画面となるのでここでそれぞれの項目を設定します。

Page 8: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 8

図図図図 3-3::::ASOでのサーバ側符号化の設定画面でのサーバ側符号化の設定画面でのサーバ側符号化の設定画面でのサーバ側符号化の設定画面

サーバ側で符号化を利用するためには、「サーバー」のチェックボックスに

チェックをつけ、「チェックサム・レベル」に適切な値(レベル)を選択します。こ

こで選択できる値は表 3-1 と同一で、サーバ側、クライアント側での組み合わせ

による動作も表 3-2と同じなのでそちらを参照してください。

設定後にネットワーク保存をおこなうと、sqlnet.oraファイルに以下のような設

定が加わります。

# 符号化のアルゴリズムSQLNET_CRYPTO_CHECKSUM_TYPE_SERVER = MD5

# 符号化のレベル設定SQLNET.CRYPTO_CHECKSUM_SERVER = required

Windows 版 Net8 Assistant Version8.1.6 の日本語版を利用すると、

sqlnet.oraファイルに出力される符号化のレベル設定は、

Page 9: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 9

SQLNET.CRYPTO_CHECKSUM_SERVER = 要求

のように日本語表記となります。しかし、このままだとデータベースに

接続しようとしたときに、

ORA-12537: TNS: 接続がクローズされました。

という、エラーが発生してしまうので、

SQLNET.CRYPTO_CHECKSUM_SERVER = requested

のように直接 sqlnet.ora ファイルを編集する必要があります。

(Bug:1276607)

回避策

なお、「コントロールパネル」→「地域」から英語圏の地域を選択する

と、Net8 Assistantが英語モードで起動しますので、この問題を回避する

ことができます。

3.1.3. リスナーの設定リスナーの設定リスナーの設定リスナーの設定

もしすでに利用できるリスナーが存在する場合は、NativeASO の暗号化、符号

化を利用するための追加設定はありません。そのまま利用することができます。

リスナーが存在しない場合はNet8 Assistantを利用して新規にリスナーを作成する

必要がありますが、ここではその作成方法は省略します。

3.2. クライアント側の設定クライアント側の設定クライアント側の設定クライアント側の設定

3.2.1. 暗号化の設定暗号化の設定暗号化の設定暗号化の設定(sqlnet.ora)

クライアント側で利用する暗号化アルゴリズムを選択します。クライアント側

(今回は Oracle iASがインストールされているホストをさします)で Net8 Assistant

を立ち上げ、左側のツリーから「Net8の構成」→「ローカル」→「プロファイル」

を選択します。次に右上の選択肢から「Oracle Advanced Security」を選択し、「暗

号化」タグをクリックします。すると図 3-4 のような画面となるのでここでそれ

Page 10: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 10

ぞれの項目を設定します。

図図図図 3-4::::ASOでのクライアント側暗号化の設定画面でのクライアント側暗号化の設定画面でのクライアント側暗号化の設定画面でのクライアント側暗号化の設定画面

暗号化

「SERVER」または「CLIENT」が選択できます。ここではクライアント側の設

定をおこなうので、「CLIENT」を選択します。

暗号化タイプ、暗号化シード、メソッド

これらの項目はサーバ側で設定したものと同一です。サーバ側の設定を参照し

てください。

設定後ネットワーク構成の保存をおこなうと、sqlnet.oraファイルに以下のよう

な設定が加わります。

# 暗号化に利用可能なアルゴリズムSQLNET.ENCRYPTION_TYPES_CLIENT= (DES, RC4_40)

# 暗号化のレベル設定SQLNET.ENCRYPTION_CLIENT = requested

Page 11: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 11

# 乱数のシードSQLNET.CRYPTO_SEED = 4fhfguweotcadsfdsafjkdsfqp5f201p45mxskdlfdasf

Windows版 Net8 Assistant Version8.1.6の日本語版を利用すると、手順

どおり設定して保存しても設定ファイルには正しく反映されません。ク

ライアント側の設定ではなくサーバ側の設定として保存されてしまいま

す。そのため、設定を正しく記述するためには直接 sqlnet.oraファイルを

編集する必要があります。

ただし、サーバ側で NativeASOの設定が正しくできている場合、クラ

イアント側で何も設定しなくても、暗号化を利用することができます。

3.2.2. 符号化の設定符号化の設定符号化の設定符号化の設定(sqlnet.ora)

利用する符号化アルゴリズムを選択します。Net8 Assistantの左側のツリーから

「Net8の構成」→「ローカル」→「プロファイル」を選択します。次に右上の選

択肢から「Oracle Advanced Security」を選択し、「整合性」タグをクリックします。

すると図 3-5のような画面が表示されるのでここでそれぞれの項目を設定します。

Page 12: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 12

図図図図 3-5::::ASOでのクライアント側符号化の設定画面でのクライアント側符号化の設定画面でのクライアント側符号化の設定画面でのクライアント側符号化の設定画面

クライアント側で符号化を利用するためには、「クライアント」のチェックボッ

クスにチェックをつけ、「チェックサム・レベル」に適切な値(レベル)を選択しま

す。ここで選択できる値は表 3-1 と同一で、サーバ側、クライアント側での組み

合わせによる動作も表 3-2と同じなのでそちらを参照してください。

設定後にネットワーク保存をおこなうと、sqlnet.oraファイルに以下のような設

定が加わります。

# 符号化のアルゴリズムSQLNET_CRYPTO_CHECKSUM_TYPE_CLIENT = MD5

# 符号化のレベル設定SQLNET.CRYPTO_CHECKSUM_CLIENT = required

Windows 版 Net8 Assistant Version8.1.6 の日本語版を利用すると、

sqlnet.oraファイルに出力される符号化のレベル設定は、

Page 13: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 13

SQLNET.CRYPTO_CHECKSUM_CLIENT = 要求

のように日本語表記となります。しかし、このままだとデータベースに

接続しようとしたときに、

ORA-12537: TNS: 接続がクローズされました。

という、エラーが発生してしまうので、

SQLNET.CRYPTO_CHECKSUM_CLIENT = requested

のように直接 sqlnet.ora ファイルを編集する必要があります。

(Bug:1276607)

回避策

なお、「コントロールパネル」→「地域」から英語圏の地域を選択する

と、Net8 Assistantが英語モードで起動しますので、この問題を回避する

ことができます。

3.2.3. サービスサービスサービスサービス・ネーミングの設定・ネーミングの設定・ネーミングの設定・ネーミングの設定

データベースへ接続するための接続文字列の設定をおこないます。ここでは

ローカル・ネーミング・メソッドを利用して、接続文字列を新規に作成します。

まず Net8 Assistantの左側のツリーから「Net8の構成」→「ローカル」→「サー

ビス・ネーミング」を選択します。左側の「+」ボタンを押すか、「編集」メニュー

から「作成」を選択して Net Service Nameウィザードを起動します。

順にネット・サービス名(接続文字列)、ネットワーク・プロトコル、ホスト名、

ポート番号、データベースのサービス名を入力し、設定を完了します。設定が完

了すると図 3-6のような画面が表示されます。

Page 14: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 14

図図図図 3-6:サービス:サービス:サービス:サービス・ネーミングの設定画面・ネーミングの設定画面・ネーミングの設定画面・ネーミングの設定画面

以上で NativeASOを利用した暗号化、符号化の設定は完了です。ここで暗号化、

符号化の設定がきちんとできているか確認します。クライアント側の SQL*Plus

からサーバに接続し、v$session_connect_info を検索することで確認することがで

きます。(図 3-7)

Page 15: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 15

図図図図 3-7:暗号化、符号化の確認画面:暗号化、符号化の確認画面:暗号化、符号化の確認画面:暗号化、符号化の確認画面

Page 16: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 16

4. SSLでのセキュリティの設定でのセキュリティの設定でのセキュリティの設定でのセキュリティの設定クライアントまたはアプリケーションサーバ

データベース(Oracle8i)

Net8 over SSL

図図図図 4-1::::SSLでの暗号化での暗号化での暗号化での暗号化

手順手順手順手順

1. データベース/クライアント双方 デジタル証明書、Walletの作成(4-1)

2. データベース側 利用するアルゴリズムの設定(4-2-1)

3. データベース側 リスナーの設定(4-2-2)

4. クライアント側 利用するアルゴリズムの設定(4-3-1)

5. クライアント側 サービス・ネーミングの設定(4-3-2)

実際に SSL を利用して、Net8 通信を暗号化、符号化する設定をおこなっていきます。

SSLを利用する際には、現在のユーザ名と、Oracle8iや Oracle iASなどのプログラムをど

のユーザで起動するかを確認し、把握しながら設定をおこなってください。後述のWallet

を作成するユーザと Oracle8i、Oracle iASもしくは SQL*Plusなどのクライアント・アプ

リケーションを実行するユーザをそれぞれ同じにしなくてはなりません。プログラムを実

行するユーザの設定を間違えると、データベースやリスナーが起動できない、クライアン

トからデータベースに接続できないといったような問題が発生します。実際の設定には

NativeASOのときと同じく Net8 Assistantを利用します。設定内容はテキストファイル

として出力されますので、設定後テキストエディタなどで設定の確認をおこなうことがで

きます。デフォルトでは設定の出力ファイルは、%ORACLE_HOME%¥network¥admin

に保存されます。具体的な設定の手順は以下のとおりです。

4.1. サーバ、クライアント共通の設定サーバ、クライアント共通の設定サーバ、クライアント共通の設定サーバ、クライアント共通の設定SSLを利用するためには、はじめにデジタル証明書(公開鍵)と証明書を格納する

Walletを作成しておく必要があります。これらは Oracle Wallet Managerを利用して

作成することができます。 Walletの設定は、サーバ、クライアントを問わず SSL

で暗号化をおこなうすべてのホスト、すべてのユーザで個別におこなう必要があ

Page 17: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 17

ります。

Wallet Managerを起動すると図 4-2のような画面がでてきます。ここで、左側の

一番上のアイコンをクリックするか、「Wallet」メニューの「新規作成」を選択す

ることによって証明書とWalletを作成することができます。

図図図図 4-2::::Wallet Manager起動画面起動画面起動画面起動画面

まずはじめにWalletのパスワードを設定します。

Page 18: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 18

図図図図 4-3::::Walletのパスワード設定画面のパスワード設定画面のパスワード設定画面のパスワード設定画面

次に証明書要求を作成します。証明書要求の作成では Wallet利用者の一意な識

別情報を入力する必要があります。この識別情報は LDAP(Lightweight Directory

Access Protocol)の形式をとっています。証明書要求画面のそれぞれの項目は LDAP

の各属性と表 4-1のように対応しています。

画面項目 LDAP属性

一般名 CN

組織単位 OU

組織 O

市町村 L

都道府県 ST

国 C

表表表表 4-1:証明書要求での識別情報と:証明書要求での識別情報と:証明書要求での識別情報と:証明書要求での識別情報と LDAP属性の対応属性の対応属性の対応属性の対応

Page 19: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 19

図図図図 4-4:証明書要求の作成画面:証明書要求の作成画面:証明書要求の作成画面:証明書要求の作成画面

また、ユーザ認証をおこなう場合は、「詳細」を選択することで、識別情報(DN)

を設定します。

証明書はここで作成した証明書要求に認証局(CA)から署名を受けることで作成

されます。「操作」メニューの「証明書要求のエクスポート」で証明書要求をファ

イルに出力し、認証局に署名を依頼します。認証局には商用のものを利用するの

が一般的ですが、ここでは SSLを利用したシステムを理解するために OpenSSLと

いうフリーの認証局パッケージを利用します。OpenSSL についてはここでは解説

を省略します。実際に証明書を作成している画面を図 4-6に示します。

最新のバージョンのOpenSSLはX.509 v3拡張形式の証明書を発行する

ため、Wallet Managerでこの証明書を利用することができません。Wallet

Managerで利用できる形式の証明書を作成するには OpenSSLの設定ファ

イル(openssl.cfg)を書き換える必要があります。設定ファイルの場所は環

境に依存しますが、/usr/local/openssl等にあります。設定ファイルの以下

の 2行をコメントアウトしてください。

# x509_extensions = usr_cert

# x509_extensions = v3_ca

Page 20: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 20

認証局(CA)①証明書要求

②証明書

サーバおよびクライアント

図図図図 4-5:証明書発行の手順:証明書発行の手順:証明書発行の手順:証明書発行の手順

図図図図 4-6::::OpenSSLによる証明書の作成画面による証明書の作成画面による証明書の作成画面による証明書の作成画面

認証局で証明書を作成した後、その証明書を Wallet にインポートします。「操

作」メニューの「ユーザ証明書のインポート」を選択します。認証局から受け取っ

た自分の証明書と信用できる証明書(認証局のデジタル証明書)を用意します。ここ

でそれぞれの証明書はファイルの状態でも文字列をバッファにコピーしたもので

もかまいません。まず発行された自分の証明書をインポートし、次に認証局の証

明書をインポートします。ここでは自分の証明書はファイルから(図 4-7)、認証局

Page 21: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 21

の証明書はバッファにコピーされたものを貼り付ける(図 4-8、4-9)というインポー

トの画面を示します。

図図図図 4-7:証明書のインポート画面:証明書のインポート画面:証明書のインポート画面:証明書のインポート画面

(ここでファイルの選択画面が表示されます)

図図図図 4-8:信頼できる証明書のインポート画面:信頼できる証明書のインポート画面:信頼できる証明書のインポート画面:信頼できる証明書のインポート画面

図図図図 4-9:証明書の貼り付け画面:証明書の貼り付け画面:証明書の貼り付け画面:証明書の貼り付け画面

Page 22: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 22

証明書の右側に「待機中」と表示されれば Walletの作成は完了です。任意の場

所にWalletを保存してください。デフォルトではC:¥WINNT¥Profiles¥DATABASES

に保存されます。

図図図図 4-10:証明書の完成:証明書の完成:証明書の完成:証明書の完成

4.2. サーバ側の設定サーバ側の設定サーバ側の設定サーバ側の設定

4.2.1. 利用するアルゴリズムの設定利用するアルゴリズムの設定利用するアルゴリズムの設定利用するアルゴリズムの設定(sqlnet.ora)

サーバ側で利用する暗号化アルゴリズムを選択します。Net8 Assistantを立ち上

げ、左側のツリーから「Net8の構成」→「ローカル」→「プロファイル」を選択

します。次に右上の選択肢から「Oracle Advanced Security」を選択し、「SSL」タグ

をクリックし、「SSL 構成」で「サーバー」を選択します。すると図 4-11 のよう

な画面が表示されるのでここでそれぞれの項目を設定します。

Page 23: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 23

図図図図 4-11:サーバ側:サーバ側:サーバ側:サーバ側 SSL設定画面設定画面設定画面設定画面

Walletディレクトリ

Wallet Managerで作成したサーバ用Walletの場所を指定します。

Cipher Suiteの構成

利用する暗号化、符号化のアルゴリズムを選択します。複数選択することもで

きますが、サーバ側で上位に指定されているアルゴリズムから順に利用されてい

きます。

設定後にネットワーク保存をおこなうと、sqlnet.oraファイルに以下のような設

定が加わります。

# 暗号化符号化のアルゴリズムSSL_CIPHER_SUITES= (SSL_RSA_EXPORT_WITH_RC4_40_MD5)

# Walletの設定OSS.SOURCE.MY_WALLET = (SOURCE = (METHOD = FILE) (METHOD_DATA =

Page 24: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 24

(DIRECTORY = c:¥WINNT¥Profiles¥ora816¥ORACLE¥WALLETS) ) )

# クライアント認証の有無SSL_CLIENT_AUTHENTICATION = TRUE

# 利用する SSLのバージョン# 0 -- すべてのバージョン# 3.0 -- バージョン 3.0SSL_VERSION = 0

NativeASO と SSL の暗号化は同時におこなうことができません。NativeASO、

SSLの両方の設定が sqlnet.oraに書かれていると、SQL*Plusからの接続時に、

ORA-12696: 暗号化オプションの両方がオンになっています。ログインできません。

というエラーが発生します。なお、NativeASOの暗号化の設定のみを、Net8 Assistant

から削除することはできません。新しく sqlnet.ora ファイルを作成しなおすか、

NativeASOの暗号化の設定をファイルから直接削除する必要があります。

4.2.2. リスナーの設定リスナーの設定リスナーの設定リスナーの設定(listener.ora)

SSLで暗号化した Net8通信を待ちうけるリスナーの設定をおこないます。すで

にあるリスナーに、SSL 通信用のリスニング位置を追加するという方法もありま

すが、ここでは新しくリスナーを作成する方法を取っています。これは新しくリ

スナーを作成した後、SSL を利用しないリスナーを消去することで、より安全な

システムを構築できるからです。

リスナーは Net8 Assistantを利用して作成します。Net8 Assistantの左側のツリー

から「Net8の構成」→「ローカル」→「リスナー」を選択します。左側の「+」

ボタンを押すか、「編集」メニューから「作成」をを選択して新しいリスナーを作

成します。ここで新しいリスナー名を入力しリスニング位置を追加するのですが、

このときプロトコルに「SSL付き TCP/IP」を選択します。その他の項目は通常の

リスナーと同じでように、データベースのホスト名、ほかのサービスがまだ利用

していないポート、そして上方の選択肢を「リスニング位置」から「データベース・

サービス」に変更して、接続先データベースの設定をおこないます。

Page 25: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 25

図図図図 4-12:リスナー設定画面:リスナー設定画面:リスナー設定画面:リスナー設定画面

設定後にネットワーク保存をおこなうと、listener.oraファイルに以下のような設

定が加わります。

LISTENER_SSL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCPS)(HOST = tofukuda)(PORT = 2484)))

SID_LIST_LISTENER_SSL = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = ora816) (ORACLE_HOME = F:¥ORACLE¥Ora81) (SID_NAME = ora816) ) )

リスナーは LSNRCTLコマンドから一度起動されると、Windows のサービスに

自動的に追加されます。

Page 26: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 26

Wallet を作成したユーザとデータベース、リスナーを起動するユーザ

を同一にしなくてはなりません。コントロールパネルの「サービス」で、

データベース、リスナーそれぞれを選択し、「スタートアップ」の「アカ

ウント」→「ログオン」をWalletを作成したユーザに変更します。Wallet

を作成したユーザとデータベース、リスナーを実行するユーザが異なる

場合、リスナーの操作時およびデータベースへの接続時に、

ORA-28862: SSL 接続に失敗しました。

というエラーが発生します。

4.3. クライアント側の設定クライアント側の設定クライアント側の設定クライアント側の設定

4.3.1. 利用するアルゴリズムの選択利用するアルゴリズムの選択利用するアルゴリズムの選択利用するアルゴリズムの選択(sqlnet.ora)

クライアント側で利用する暗号化アルゴリズムを選択します。Net8 Assistantを

立ち上げ、左側のツリーから「Net8の構成」→「ローカル」→「プロファイル」

を選択します。次に右上の選択肢から「Oracle Advanced Security」を選択し、「SSL」

タグをクリックし、「SSL構成」で「クライアント」を選択します。すると図 4-13

のような画面が表示されるのでここでそれぞれの項目を設定します。

Page 27: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 27

図図図図 4-13:クライアント側:クライアント側:クライアント側:クライアント側 SSL設定画面設定画面設定画面設定画面

Walletディレクトリ

Wallet Manager で作成したクライアント用 Wallet の場所を指定します。ここで

はWalletの作成には触れていませんが、4-1節の手順でサーバ用とは別にクライア

ント用のWalletを作成しておく必要があります。

Cipher Suiteの構成

利用する暗号化、符号化のアルゴリズムを選択します。複数選択することもで

きますが、サーバ側で上位に指定されているアルゴリズムから順に利用されてい

きます。

4.3.2. サービスサービスサービスサービス・ネーミングの設定・ネーミングの設定・ネーミングの設定・ネーミングの設定(tnsnames.ora)

データベースへ接続するための接続文字列の設定をおこないます。ここでは

ローカル・ネーミング・メソッドを利用して、接続文字列を新規に作成します。

まず Net8 Assistantの左側のツリーから「Net8の構成」→「ローカル」→「サー

Page 28: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 28

ビス・ネーミング」を選択します。左側の「+」ボタンを押すか、「編集」メニュー

から「作成」を選択して Net Service Nameウィザードを起動します。

サービス・ネーミングの作成方法は、ネットワーク・プロトコルで「SSL 付き

TCP/IP」を選択する(図 4-14)以外は通常のものを作成するときと同じです。順に

ネット・サービス名(接続文字列)、ネットワーク・プロトコル、ホスト名、ポート

番号、データベースのサービス名を入力し、設定を完了します。設定が完了する

と図 4-15の画面が表示されます。

図図図図 4-14::::Net Service Nameウィザードのプロトコル選択画面ウィザードのプロトコル選択画面ウィザードのプロトコル選択画面ウィザードのプロトコル選択画面

Page 29: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 29

図図図図 4-15:サービス:サービス:サービス:サービス・ネーミングの設定画面・ネーミングの設定画面・ネーミングの設定画面・ネーミングの設定画面

以上で SSLを利用した暗号化、符号化の設定は完了です。

設定後ネットワーク構成の保存をおこなうと、tnsnames.oraファイルに以下のよ

うな設定が加わります。

ORA816-SSL.JP.ORACLE.COM = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCPS)(HOST = tofukuda)(PORT = 2484)) ) (CONNECT_DATA = (SERVICE_NAME = ora816) ) )

Page 30: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 30

5. Oracle iASとデータベース間のセキュリティとデータベース間のセキュリティとデータベース間のセキュリティとデータベース間のセキュリティクライアント

(Webブラウザ)アプリケーションサーバ

(Oracle iAS)データベース

(Oracle8i)

Encrypted Net8(NativeASO)

orNet8 over SSL

図図図図 5-1:アプリケーションサーバとデータベース間の暗号化:アプリケーションサーバとデータベース間の暗号化:アプリケーションサーバとデータベース間の暗号化:アプリケーションサーバとデータベース間の暗号化

暗号化、符号化した Net8通信を利用することで Oracle iASとデータベース間の通信の

セキュリティを確保することが可能となります。 PL/SQL 、JAVA、XML それぞれでセ

キュリティの機能を利用するための設定方法を解説します。ここではサーバ側、クライア

ント側(Oracle iAS側)ですでに 3、4章で述べた NativeASOまたは SSLの設定が完了して

いるものとします。ここでは SSLを用いる例を示します。なお、SSLで暗号化、符号化を

行う場合、Oracle iASの実行ユーザは Oracle iASのWalletを作成したユーザと同一にす

る必要があります。「コントロールパネル」→「サービス」から OracleHTTPServerを選

択し、「スタートアップ」の「アカウント」→「ログオン」をWalletを作成したユーザに

変更します。

データベースと Oracle iASが同じコンピュータにインストールされて

いる場合、デフォルトの状態では%iAS_HOME%network¥admin以下にあ

る Net8 の設定ファイルを参照します。Oracle Home Selector を利用して

ORACLE_HOMEを変更して Net8 Assistantでネットワークの設定を設定

しなおすか、すでに設定の完了している設定ファイルをコピーする必要

があります。

5.1. PL/SQL

mod_plsqlを用いて通信の暗号化の設定は、Database Access Descriptor(DAD)の設

定によっておこないます。「Oracle Connect String」に暗号化された通信を利用する

Net8の接続文字列を入力します。

Page 31: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 31

図図図図 5-2::::DADの設定画面の設定画面の設定画面の設定画面

5.2. JAVA、、、、XML

JAVA、XMLの場合、データベースとの接続は JDBCドライバでおこないます。

Oracleの JDBCドライバには Thinドライバと OCIドライバの 2種類があります。

Thinドライバはすべてが Javaで記述されたもので、プラットフォームに依存しな

いという特徴があります。一方、OCIドライバはオラクル・コール・インターフェー

ス(OCI)を呼び出し、Net8経由でデータベースに接続するものです。Thinドライバ

を利用して暗号化通信をおこなうこともできますが、暗号化の設定などプログラ

ムを書き直さなくてはなりません。OCIドライバは Net8の設定が必要ですが、プ

ログラム自体の変更は最小限ですみます。

今回はプログラムの変更点が Thinドライバに比べ少なく、既存アプリケーショ

ンからの移行がより容易である OCIドライバを利用する方法を解説します。実際

に暗号化をおこなうには、プログラムや設定ファイル中の JDBC のデータベース

Page 32: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 32

URLを暗号化対応のものに変更します。 実際の設定の例を以下に示します。

JAVAプログラム、プログラム、プログラム、プログラム、JSPファイルの中での記述例ファイルの中での記述例ファイルの中での記述例ファイルの中での記述例

Connection conn =DriverManager.getConnection("jdbc:oracle:oci8:@ora816-ssl",

"scott", "tiger");

または、

Connection conn =DriverManager.getConnection(

"jdbc:oracle:oci8:scott/tiger@ora816-ssl");

JML(OracleJSP Markup Language)での記述例での記述例での記述例での記述例

<jml:dbOpen URL="jdbc:oracle:oci8:@ora816-ssl"user="scott" password="tiger" connId="conn" />

XMLでの設定例での設定例での設定例での設定例

%iAS_HOME%¥xdk¥lib¥XSQLConfig.xmlファイルを編集します。

<connectiondefs>

<!-- 中略 -->

<connection name="ora816-ssl"><username>scott</username><password>tiger</password><dburl>jdbc:oracle:oci8:@ora816-ssl</dburl><driver>oracle.jdbc.driver.OracleDriver</driver>

</connection>

</connectiondefs>

Oracle iASとデータベース間のセキュリティの設定は、サービス・ネーミングをセキュ

リティ機能に対応したものに変更するだけなので、新しくシステムを開発する際にも既存

のシステムを移行する際にも非常に容易であるといえます。

6. 既存システムの既存システムの既存システムの既存システムの SSL対応例対応例対応例対応例実際のシステム構築例として、Apache、Apache Jservと Oracle XSQL Servletという

組み合わせで動作している週報システムを Oracle iASに移行し、同時にブラウザと Oracle

Page 33: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 33

iAS間、Oracle iASとデータベース間で SSL暗号化をおこなうという例を示します。週報

システムについての詳細は「Oracle8iと XML を利用した Web アプリケーション構築法」

(Oracle Technology Network Japanからダウンロード可能)を参照してください。データ

ベースは実際に運用されているものをそのまま利用し、Oracle iASは新規インストールし

て利用するものとします。

クライアント(Webブラウザ)

アプリケーションサーバ(Oracle iAS)

データベース(Oracle8i)

http over SSL Net8 over SSL

図図図図 6-1:::: SSLによるによるによるによる 3層構造システムのセキュリティ層構造システムのセキュリティ層構造システムのセキュリティ層構造システムのセキュリティ

環境は、Oracle iAS(8i R1.0.1)がWindowsNT、データベース(Oracle8i 8.1.6)が Solaris

となっています。このドキュメントでは Oracle iASのインストールが完了した時点からの

設定方法を解説します。Oracle iASのインストールについてはここでは省略します。また、

4章の SSLの設定も完了しているものとします。Walletを作成したユーザとデータベース、

Oracle iASを実行するユーザがそれぞれ同一であることを確認してください。

6.1. 週報システムのディレクトリ構成週報システムのディレクトリ構成週報システムのディレクトリ構成週報システムのディレクトリ構成週報システムは以下のようなディレクトリ構成をしています。ここでは週報シ

ステムのインストール先を F:¥workflowします。

F:workflow├apache // 設定ファイルのサンプルがあります。今回は利用しません。├classes // Servletのソースおよび Classファイルが格納されています。├htdocs // 静的な HTMLファイルが格納されています。├lib// サーブレット共通のライブラリが格納されています。└sqlplus // システム構築のためのスクリプトが格納されています。

Page 34: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 34

6.2. 設定ファイルの編集設定ファイルの編集設定ファイルの編集設定ファイルの編集ここでは Oracle iASを新規にインストールした状態なので、まずはじめに週報

システムを利用するための Oracle iASの設定をおこないます。同時に Oracle iAS

とブラウザ間を暗号化する SSLの設定もおこないます。

httpd.conf

Oracle iAS の Web サーバである、Oracle HTTP Server の基本的な設定

は%iAS_HOME%¥Apache¥Apache¥conf ディレクトリにある httpd.conf によってお

こないます。ここでは以下の項目について設定します。

Port

サーバのデフォルトの待ち受けポートを設定します。 Windows版 Oracle iASの

デフォルトでは 80番となっています。今回は 9010に設定します。

Port 9010

Listen

サーバの待ち受けポートの設定をおこないます。複数のポートで待ちうける場

合は複数記述します。Windows 版 Oracle iAS のデフォルトでは http 用に 80 番、

https(SSLで暗号化された http)用に 443番が設定されています。httpsを利用する際

は、後述の<VirtualHost>の設定もあわせておこないます。https 用のポートとして

今回はデフォルトの 443を利用することにします。

Listen 9010Listen 443

DocumentRoot

Web コンテンツのデフォルトのディレクトリを設定します。デフォルトで

は%iAS_HOME%¥Apache¥Apache¥htdocsとなっています。

DocumentRoot "F:¥workflow¥htdocs"

ServerAdmin

サーバ管理者のメールアドレスを指定します。

ServerAdmin [email protected]

Page 35: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 35

<VirtualHost> ~ </VirtualHost>

httpsを利用する場合に設定します。<VirtualHostの括弧の中に続いている値は通

信の待ち受け位置で、下の例では 443番ポートで待ち受けていることを示します。

Listen指示子で SSL用に設定した値を設定してください。また<VirtualHost>内の以

下の指示子も変更する必要があります。

DocumentRoot

SSL通信をおこなうWebコンテンツのデフォルトのディレクトリを設定します。

デフォルトでは%iAS_HOME%¥Apache¥Apache¥htdocs となっています。この設定

をコメントアウトもしくは消去すると、 <VirtualHost>以前に設定した

DocumentRoot指示子の値が継承されます。

ServerAdmin

SSL 通信をおこなうサーバの管理者のアドレスを指定します。この設定をコメ

ントアウトもしくは消去すると、<VirtualHost>以前に設定した ServerAdmin指示子

の値が継承されます。

SSLCertificateFile

SSLCertificateKeyFile

Webサーバの証明書および秘密鍵を指定します。なお、Webサーバ用の証明書

及び秘密鍵は Oracle iASのWalletとは形式が異なるので、別に作成する必要があ

ります。Webサーバ用の証明書、秘密鍵は openSSL、ICATなどのパッケージを用

いて作成することができますが、ここでは具体的な作成方法は省略します。それ

ぞれの指示子のデフォルトは、証明書(SSLCertificateFile)が conf¥ssl.crt¥server.crt、

秘密鍵(SSLCertificateKeyFile)が conf¥ssl.key¥server.keyとなっています。

<VirtualHost _default_:443>DocumentRoot "F:¥workflow¥htdocs"ServerAdmin [email protected]

SSLCertificateFile conf¥ssl.crt¥server.crtSSLCertificateKeyFile conf¥ssl.key¥server.key

</VirtualHost>

Page 36: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 36

jserv.conf

jserv.conf は%iAS_HOME%¥Apache¥jserv¥conf ディレクトリにあり、JavaVM の

設定をおこないます。

ApJservAction

週報システムでは wfs という拡張子を持つファイルを定義しています。この指

示子ではブラウザからこのファイルを要求された場合の処理を設定しています。

ここでは workflow.servlet.WorkflowServletに処理を渡す設定をおこなっています。

ApJServAction .wfs /servlet/workflow.servlet.WorkflowServlet

jserv.properties

jserv.properties は jserv.conf と同じく%iAS_HOME%¥Apache¥jserv¥conf ディレク

トリにあり、Servletなど Javaプログラムを実行する際の Classpathなどを定義して

います。Oracle iASではインストール時に設定はすべて完了していますが、週報シ

ステムを利用するには以下の設定を追加する必要があります。

wrapper.classpath=F:¥workflow¥lib¥runtime.jar

zone.properties

zone.propertiesは%iAS_HOME%¥Apache¥jserv¥servletsディレクトリにあり、サー

ブレットのレポジトリやゾーンについての設定をおこないます。

repositories

ゾーンに含まれる Javaクラスファイルの物理的な場所を指定します。カンマで

区切ることにより複数指定できます。ここではすでにある設定に週報システムで

利用するディレクトリを追加する形をとっています。

repositories=F:¥Oracle¥iAS¥Apache¥Jserv¥servlets, F:¥workflow¥classes

initArgs

サーブレットで利用する変数に初期値を代入します。週報システムではサーブ

レットで用いるデータベースへの接続の設定をここで設定しています。下記の設

定では workflow.servlet.WorkflowServletの「connect」という変数にデータベースへ

の接続文字列を代入しています。ここで OCI ドライバの SSL 設定をおこなった

Page 37: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 37

サービス・ネーミングを指定することで Oracle iASとデータベース間を SSL暗号

化することができます。

servlet.workflow.servlet.WorkflowServlet.initArgs=connect=jdbc:oracle:oci8:wfs/wfs@ora816-ssl

XSQLConfig.xml

XSQLConfig.xml は%iAS_HOME%¥xdk¥lib にあり、XSQL サーブレットの設定

をおこないます

<connectiondefs> ~ </connectiondefs>

XSQL サーブレットからのデータベースへの接続の設定を追加します。ここで

OCI ドライバの SSL 設定をおこなったサービス・ネーミングを指定することで

Oracle iASとデータベース間を SSL暗号化することができます。

<connectiondefs>

<connection name="wfs"><username>wfs</username><password>wfs</password><dburl>jdbc:oracle:oci8:@ora816-ssl</dburl><driver>oracle.jdbc.driver.OracleDriver</driver>

</connection>

</connectiondefs>

以上で設定は完了です。 SSL 暗号化の設定はブラウザと Oracle iAS 間は

http.confファイル、Oracle iASとデータベース間はサービス・ネーミングの変更の

みですので、非常に容易に現行のシステムを移行できるといえます。

6.3. Oracle HTTP Serverの再起動の再起動の再起動の再起動設定を変更した後は Oracle HTTP Serverを再起動しなくてはなりません。ただ

し、WindowsNTを利用している場合、Oracle HTTP Serverをサービスから「停止」

→「起動」しても、JavaVM が正常に起動しないことがあります。「Windows NT

タスクマネージャー」の「プロセス」タグで再起動時に「java.exe」がきちんと終

了、起動していることを確認してください。

Page 38: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 38

図図図図 6-1::::Windows NTタスクマネージャータスクマネージャータスクマネージャータスクマネージャー

クライアントからの接続クライアントからの接続クライアントからの接続クライアントからの接続クライアントから接続するにブラウザから以下の URLにアクセスします。

http://<hostname>:9010/

もしくは、

https://<hostname>/

httpsの待ち受けのポートをデフォルトの 443から変更した場合は、

https://<hostname>:<port>/

Page 39: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 39

とポートを明示的に指定してください。

Page 40: Oracle Advanced Securityotndnld.oracle.co.jp/products/iserver/oracle8i/pdf/o8i...o8i_816_asont_11_1963.doc - Oracle Advanced Security による暗号化設定手順 -3 に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し

o8i_816_asont_11_1963.doc

- Oracle Advanced Securityによる暗号化設定手順 - 40

日本オラクル株式会社日本オラクル株式会社日本オラクル株式会社日本オラクル株式会社

Copyright(C) Oracle Corporation Japan. All Rights Reserved.

無断転載を禁ず

この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されるこ

とがあります。日本オラクル社は本書の内容に関していかなる保証もいたしません。また、

本書の内容に関連したいかなる損害についても責任を負いかねます。

Oracleは、オラクル社の登録商標です。Oracle8、Oracle8i、Net8は、オラクル社の商

標または登録商標です。

他のすべての企業名と製品名は、識別のためにのみ掲載されており、それぞれの所有者

の商標の場合があります。