• 検索結果がありません。

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 )

N/A
N/A
Protected

Academic year: 2021

シェア "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 )"

Copied!
40
0
0

読み込み中.... (全文を見る)

全文

(1)

暗号化設定手順

暗号化設定手順

暗号化設定手順

暗号化設定手順

Oracle8i

と Oracle Internet Application Server 間の

間の

間の

間の

セキュリティ

セキュリティ

セキュリティ

セキュリティ(WindowsNT での設定

での設定

での設定)

での設定

Creation Date: Sep 23, 2000 Last Update: Oct 24, 2000

(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 Security

Oracle8i では Enterprise Edition の有償オプションである Oracle Advanced Security (Advanced Security Option、以下 ASO と表記)により、データの暗号化や改ざんの防止、 外部認証サーバーとの連携、シングルサインオンといったセキュリティ・ソリューション を提供しています。ASO は米国商務省連邦情報処理規格の暗号モジュール用セキュリティ 要件である FIPS140 のレベル 2 に対応しています。また、そのほかにも Common Criteria(ISO/IEC15408)、Orange Book、ITSEC など 12 種類のセキュリティ評価基準に 対応しています。 一般的にネットワーク・セキュリティは、データの隠蔽、データの改ざん防止、そして 認証の 3 つに分類することができます。 データの隠蔽とは通信データを暗号化することです。通常の通信データは、スニファー と呼ばれるツールを利用することで、簡単に内容を見ることができます。個人情報やクレ ジットカード番号などの機密情報をインターネット上でやり取りするには通信データの暗 号化は必須事項といえます。 データの改ざん防止は第 3 者が通信途中でのデータを書き換えることを防ぐ処置で、符 号化という技術を利用しています。符号化とはハッシュ関数を用いて送信データから短い ダイジェストを作成することです。異なるデータのダイジェストが同一になる確率は十分

(3)

に低いため、送信されてきたデータから自分で作成したダイジェストと、発信者が作成し たダイジェストが一致すればそのデータはネットワークの途中で書き換えられていないと いうことになります。 認証にはアクセス制御や、データを送信するとき送信先が本当に正しいところかどうか、 また受信したデータが本当に正しい送信者から送られてきたものかどうかということを確 かめる正当性の検証などが含まれます。パスワード認証はアクセス制御の代表的な例です。 また、デジタル証明書(電子署名)は双方に利用することができます。 ASO では共通鍵暗号方式の NativeASO、公開鍵暗号方式の SSL という 2 つの方法でネッ トワーク・セキュリティを提供しています。(図 2-1)ただし、米国で暗号の 2 重利用が制限 されているため、ASO では同時に両方の暗号方式を利用することはできません。それぞれ の方法が利用できるアルゴリズムを表 2-1 に示します。

クライアント

(Webブラウザ)

アプリケーションサーバ

(Oracle iAS)

データベース

(Oracle8i)

http over SSL

Encrypted Net8

(NativeASO)

or

Net8 over SSL

図 図 図 図 2-1::::ASO による暗号化による暗号化による暗号化による暗号化 アルゴリズム NativeASO SSL 暗号化 RC4(40bit, 56bit, 128bit)

DES(40bit, 56bit) RC4(40bit, 128bit) DES(40bit, 56bit) 3DES(Triple-DES) 符号化 MD5 MD5 SHA

(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 での暗号化: での暗号化での暗号化での暗号化

(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 のような画面となるのでここでそれぞれの 項目を設定します。

(6)

図 図 図 図 3-2::ASO によるサーバ側暗号化の設定画面: によるサーバ側暗号化の設定画面によるサーバ側暗号化の設定画面によるサーバ側暗号化の設定画面 暗号化 「SERVER」または「CLIENT」が選択できます。ここではサーバ側の設定をお こなうので、「SERVER」を選択します。 暗号化タイプ 暗号化のレベルです。表 3-1 の 4 つのレベルから選択できます。 レベル 説明 適用(accepted) 暗号化通信が可能なレベル 拒否(rejected) 暗号化通信が不可能なレベル 要求(requested) 暗号化通信を要求するレベル 必要(required) 暗号化通信が必須なレベル 表 表 表 表 3-1:暗号化、符号化レベル一覧:暗号化、符号化レベル一覧:暗号化、符号化レベル一覧:暗号化、符号化レベル一覧 サーバ側、クライアント側それぞれの暗号化タイプの組み合わせにより、実際

(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)

(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ファイルに出力される符号化のレベル設定は、

(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) クライアント側で利用する暗号化アルゴリズムを選択します。クライアント側

(10)

ぞれの項目を設定します。 図 図 図 図 3-4::::ASO でのクライアント側暗号化の設定画面でのクライアント側暗号化の設定画面でのクライアント側暗号化の設定画面でのクライアント側暗号化の設定画面 暗号化 「SERVER」または「CLIENT」が選択できます。ここではクライアント側の設 定をおこなうので、「CLIENT」を選択します。 暗号化タイプ、暗号化シード、メソッド これらの項目はサーバ側で設定したものと同一です。サーバ側の設定を参照し てください。 設定後ネットワーク構成の保存をおこなうと、sqlnet.ora ファイルに以下のよう な設定が加わります。 # 暗号化に利用可能なアルゴリズム SQLNET.ENCRYPTION_TYPES_CLIENT= (DES, RC4_40) # 暗号化のレベル設定 SQLNET.ENCRYPTION_CLIENT = requested

(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 のような画面が表示されるのでここでそれぞれの項目を設定します。

(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ファイルに出力される符号化のレベル設定は、

(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 のような画面が表示されます。

(14)

図 図図 図 3-6:サービス:サービス:サービス:サービス・ネーミングの設定画面・ネーミングの設定画面・ネーミングの設定画面・ネーミングの設定画面 以上で NativeASO を利用した暗号化、符号化の設定は完了です。ここで暗号化、 符号化の設定がきちんとできているか確認します。クライアント側の SQL*Plus からサーバに接続し、v$session_connect_info を検索することで確認することがで きます。(図 3-7)

(15)

図 図 図

(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 で暗号化をおこなうすべてのホスト、すべてのユーザで個別におこなう必要があ

(17)

ります。 Wallet Managerを起動すると図 4-2 のような画面がでてきます。ここで、左側の 一番上のアイコンをクリックするか、「Wallet」メニューの「新規作成」を選択す ることによって証明書と Wallet を作成することができます。 図 図図 図 4-2::::Wallet Manager 起動画面起動画面起動画面起動画面 まずはじめに Wallet のパスワードを設定します。

(18)

図 図 図 図 4-3::::Wallet のパスワード設定画面のパスワード設定画面のパスワード設定画面のパスワード設定画面 次に証明書要求を作成します。証明書要求の作成では Wallet 利用者の一意な識 別情報を入力する必要があります。この識別情報は LDAP(Lightweight Directory Access Protocol)の形式をとっています。証明書要求画面のそれぞれの項目は LDAP の各属性と表 4-1 のように対応しています。 画面項目 LDAP 属性 一般名 CN 組織単位 OU 組織 O 市町村 L 都道府県 ST 国 C 表 表表 表 4-1:証明書要求での識別情報と:証明書要求での識別情報と:証明書要求での識別情報と:証明書要求での識別情報と LDAP 属性の対応属性の対応属性の対応属性の対応

(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 行をコメントアウトしてください。

(20)

認証局(CA)

①証明書要求 ②証明書

サーバおよび

クライアント

図 図 図 図 4-5:証明書発行の手順:証明書発行の手順:証明書発行の手順:証明書発行の手順 図 図図 図 4-6::OpenSSL による証明書の作成画面: による証明書の作成画面による証明書の作成画面による証明書の作成画面 認証局で証明書を作成した後、その証明書を Wallet にインポートします。「操 作」メニューの「ユーザ証明書のインポート」を選択します。認証局から受け取っ た自分の証明書と信用できる証明書(認証局のデジタル証明書)を用意します。ここ でそれぞれの証明書はファイルの状態でも文字列をバッファにコピーしたもので もかまいません。まず発行された自分の証明書をインポートし、次に認証局の証 明書をインポートします。ここでは自分の証明書はファイルから(図 4-7)、認証局

(21)

の証明書はバッファにコピーされたものを貼り付ける(図 4-8、4-9)というインポー トの画面を示します。 図 図 図 図 4-7:証明書のインポート画面:証明書のインポート画面:証明書のインポート画面:証明書のインポート画面 (ここでファイルの選択画面が表示されます) 図 図図 図 4-8:信頼できる証明書のインポート画面:信頼できる証明書のインポート画面:信頼できる証明書のインポート画面:信頼できる証明書のインポート画面

(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 のよう な画面が表示されるのでここでそれぞれの項目を設定します。

(23)

図 図 図

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

Walletディレクトリ

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

Cipher Suiteの構成 利用する暗号化、符号化のアルゴリズムを選択します。複数選択することもで きますが、サーバ側で上位に指定されているアルゴリズムから順に利用されてい きます。 設定後にネットワーク保存をおこなうと、sqlnet.ora ファイルに以下のような設 定が加わります。 # 暗号化符号化のアルゴリズム SSL_CIPHER_SUITES= (SSL_RSA_EXPORT_WITH_RC4_40_MD5)

(24)

(DIRECTORY = c:¥WINNT¥Profiles¥ora816¥ORACLE¥WALLETS) ) ) # クライアント認証の有無 SSL_CLIENT_AUTHENTICATION = TRUE # 利用するSSLのバージョン # 0 -- すべてのバージョン # 3.0 -- バージョン3.0 SSL_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」を選択します。その他の項目は通常の リスナーと同じでように、データベースのホスト名、ほかのサービスがまだ利用 していないポート、そして上方の選択肢を「リスニング位置」から「データベース・ サービス」に変更して、接続先データベースの設定をおこないます。

(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) ) )

(26)

Wallet を作成したユーザとデータベース、リスナーを起動するユーザ を同一にしなくてはなりません。コントロールパネルの「サービス」で、 データベース、リスナーそれぞれを選択し、「スタートアップ」の「アカ ウント」→「ログオン」を Wallet を作成したユーザに変更します。Wallet を作成したユーザとデータベース、リスナーを実行するユーザが異なる 場合、リスナーの操作時およびデータベースへの接続時に、 ORA-28862: SSL 接続に失敗しました。 というエラーが発生します。

4.3.

クライアント側の設定

クライアント側の設定

クライアント側の設定

クライアント側の設定

4.3.1. 利用するアルゴリズムの選択利用するアルゴリズムの選択利用するアルゴリズムの選択利用するアルゴリズムの選択(sqlnet.ora) クライアント側で利用する暗号化アルゴリズムを選択します。Net8 Assistant を 立ち上げ、左側のツリーから「Net8 の構成」→「ローカル」→「プロファイル」 を選択します。次に右上の選択肢から「Oracle Advanced Security」を選択し、「SSL」 タグをクリックし、「SSL 構成」で「クライアント」を選択します。すると図 4-13 のような画面が表示されるのでここでそれぞれの項目を設定します。

(27)

図 図 図

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

Walletディレクトリ

Wallet Managerで作成したクライアント用 Wallet の場所を指定します。ここで は Wallet の作成には触れていませんが、4-1 節の手順でサーバ用とは別にクライア ント用の Wallet を作成しておく必要があります。 Cipher Suiteの構成 利用する暗号化、符号化のアルゴリズムを選択します。複数選択することもで きますが、サーバ側で上位に指定されているアルゴリズムから順に利用されてい きます。

(28)

ビス・ネーミング」を選択します。左側の「+」ボタンを押すか、「編集」メニュー から「作成」を選択して Net Service Name ウィザードを起動します。

サービス・ネーミングの作成方法は、ネットワーク・プロトコルで「SSL 付き TCP/IP」を選択する(図 4-14)以外は通常のものを作成するときと同じです。順に ネット・サービス名(接続文字列)、ネットワーク・プロトコル、ホスト名、ポート 番号、データベースのサービス名を入力し、設定を完了します。設定が完了する と図 4-15 の画面が表示されます。 図 図図

(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) )

(30)

5. Oracle iAS

とデータベース間のセキュリティ

とデータベース間のセキュリティ

とデータベース間のセキュリティ

とデータベース間のセキュリティ

クライアント

(Webブラウザ)

アプリケーションサーバ

(Oracle iAS)

データベース

(Oracle8i)

Encrypted Net8 (NativeASO) or Net8 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の接続文字列を入力します。

(31)

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

5.2. JAVA

、XML

JAVA、XML の場合、データベースとの接続は JDBC ドライバでおこないます。 Oracleの JDBC ドライバには Thin ドライバと OCI ドライバの 2 種類があります。 Thinドライバはすべてが Java で記述されたもので、プラットフォームに依存しな いという特徴があります。一方、OCI ドライバはオラクル・コール・インターフェー ス(OCI)を呼び出し、Net8 経由でデータベースに接続するものです。Thin ドライバ を利用して暗号化通信をおこなうこともできますが、暗号化の設定などプログラ ムを書き直さなくてはなりません。OCI ドライバは Net8 の設定が必要ですが、プ ログラム自体の変更は最小限ですみます。

(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

(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ファイルが格納されています。

(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 9010 Listen 443 DocumentRoot Web コンテンツのデフォルトのディレクトリを設定します。デフォルトで は%iAS_HOME%¥Apache¥Apache¥htdocs となっています。 DocumentRoot "F:¥workflow¥htdocs" ServerAdmin サーバ管理者のメールアドレスを指定します。 ServerAdmin Tomohiko.Fukuda@oracle.com

(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 Tomohiko.Fukuda@oracle.com ∼ SSLCertificateFile conf¥ssl.crt¥server.crt SSLCertificateKeyFile conf¥ssl.key¥server.key ∼

(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 設定をおこなった

(37)

サービス・ネーミングを指定することで Oracle iAS とデータベース間を SSL 暗号 化することができます。 servlet.workflow.servlet.WorkflowServlet.initArgs=connect=jdbc:oracl e: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

の再起動

の再起動

の再起動

の再起動

(38)

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

クライアントからの接続

クライアントからの接続

クライアントからの接続

クライアントからの接続

クライアントから接続するにブラウザから以下の URL にアクセスします。 http://<hostname>:9010/ もしくは、 https://<hostname>/ httpsの待ち受けのポートをデフォルトの 443 から変更した場合は、 https://<hostname>:<port>/

(39)
(40)

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

Copyright(C) Oracle Corporation Japan. All Rights Reserved. 無断転載を禁ず この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されるこ とがあります。日本オラクル社は本書の内容に関していかなる保証もいたしません。また、 本書の内容に関連したいかなる損害についても責任を負いかねます。 Oracle は、オラクル社の登録商標です。Oracle8、Oracle8i、Net8 は、オラクル社の商 標または登録商標です。 他のすべての企業名と製品名は、識別のためにのみ掲載されており、それぞれの所有者 の商標の場合があります。

図 3-7:暗号化、符号化の確認画面 :暗号化、符号化の確認画面 :暗号化、符号化の確認画面 :暗号化、符号化の確認画面
図 4-11:サーバ側 :サーバ側 :サーバ側 :サーバ側 SSL 設定画面 設定画面 設定画面 設定画面
図 4-13:クライアント側 :クライアント側 :クライアント側 :クライアント側 SSL 設定画面 設定画面 設定画面 設定画面
図 4-14: : :Net Service Name : ウィザードのプロトコル選択画面 ウィザードのプロトコル選択画面 ウィザードのプロトコル選択画面 ウィザードのプロトコル選択画面
+2

参照

関連したドキュメント

サーバー費用は、Amazon Web Services, Inc.が提供しているAmazon Web Servicesのサーバー利用料とな

このマニュアル全体を読んで、Oracle Diagnostics Pack に同梱の Oracle Performance Manager、Oracle Capacity Planner、Oracle TopSessions および Oracle Event

ROKU KYOTO Autumn Parfait ~ Shine muscat &amp; Jasmine tea ~ ROKU KYOTO

(4) 現地参加者からの質問は、従来通り講演会場内設置のマイクを使用した音声による質問となり ます。WEB 参加者からの質問は、Zoom

Webカメラ とスピーカー 、若しくはイヤホン

Oracle WebLogic Server の脆弱性 CVE-2019-2725 に関する注 意喚起 ISC BIND 9 に対する複数の脆弱性に関する注意喚起 Confluence Server および Confluence

FortiAP セキュアな アクセスポイント FortiManager 集中セキュリティ 管理.

法制執務支援システム(データベース)のコンテンツの充実 平成 13