今日、セキュリティは大きな懸念事項です。OracleAppsR12でSSLを有効にする手順は次のとおりです
目次
はじめに:
- WebブラウザとWebサーバー間のデータは、R12アプリケーションでは暗号化されずに移動するため、パスワードやその他の情報をスニファで追跡できます。ユーザー名/パスワードまたは機密データを取得できます。これは、Oracleアプリケーションにインターネットでアクセスできる場合に重要になります
- SSL実装では、データは暗号化された形式で送信され、ウェブブラウザとウェブサーバーのみがデータを復号化できます。実装には、構成に従ってR12環境でSSL証明書と構成が必要です。
SSLとは何ですか?
SSLとTLSは、通信するアプリケーションとインターネット上のユーザーとの間のプライバシーを確保する暗号化プロトコルです
SSL証明書とは
SSLは2種類の証明書を使用します:
ユーザー証明書:
これらは、公開鍵/秘密鍵交換でIDを証明するためにサーバーまたはユーザーに発行される証明書です。
信頼できる証明書:
これらは、発行するユーザー証明書に署名する認証局など、信頼できるエンティティを表す証明書です。
Secure Sockets Layer(SSL)
SSLは、安全なトランザクションのための相互認証、データ暗号化、およびデータ整合性の重要な機能を定義するテクノロジーです。このような安全なトランザクションでのクライアントとサーバー間のデータ交換は、Secure Sockets Layer(SSL)を使用すると言われています。
トランスポート層セキュリティ(TLS)
トランスポート層セキュリティは、通信するアプリケーションとインターネット上のユーザーとの間のプライバシーを保証する暗号化プロトコルです。 SSLはOracleApplicationServerのすべてのバージョンでサポートされていますが、TLSには少なくともApplication Server10.1.2.0が必要です。OracleApplicationsRelease12は、SSLとTLSの両方の使用をサポートしています。
SSLの仕組み
- クライアントはHTTPS接続モードを使用してサーバーにリクエストを送信します。
- サーバーはデジタル証明書をクライアントに提示します。この証明書には、サーバー名、組織とサーバーの公開鍵、CA秘密鍵のデジタル署名などのサーバーの識別情報が含まれています
- クライアント(Webブラウザ)には、すべてのCAの公開キーがあります。デジタル証明書の秘密鍵を復号化します。この検証は、送信者が秘密鍵にアクセスできたため、公開鍵に関連付けられた人物である可能性が高いことを証明します。検証がうまくいくと、サーバーは信頼できるサーバーとして認証されます。
- クライアントは、使用できる暗号化レベルまたは暗号のリストをサーバーに送信します。
- サーバーはリストを受信し、共通の暗号化の最強レベルを選択します。
- クライアントはサーバーの公開鍵を使用して乱数を暗号化し、その結果をサーバーに送信します(サーバーのみが秘密鍵を使用して復号化できる必要があります)。次に、両方の当事者が乱数を使用して、セッション中にデータを暗号化および復号化するための一意のセッションキーを生成します。
したがって、上記の手順から明らかなように、Webサーバーにはデジタル証明書が必要であり、証明書の保存には10.1.3のOracleウォレットを使用します
OracleAppsR12のSSLのさまざまなトポロジ
ssl実装は、R12実装のトポロジーに依存します。私はここですべての主要なものを強調しています。これは、R12.0とR12.1の両方の実装に有効です。
- 単一のウェブサーバー展開。
これは非常に簡単です。 Webサーバーのデジタル証明書が必要になります。手順は簡単です。 WebブラウザとWebサーバー間のトラフィックは暗号化されます
- 2つ以上のウェブサーバーにサービスを提供するロードバランサーがあると、少し複雑になります
この場合、次のオプションがあります
- トラフィックのエンドツーエンド暗号化
ブラウザからロードバランサーへ、およびロードバランサーからウェブサーバーへのトラフィックフロー全体が暗号化されます
それを行うには2つの方法があります
(a)パススルー構成 :この場合の負荷分散では、メッセージは復号化/暗号化されません。トラフィックを通過してWebサーバーに送られるだけです
重要な考慮事項負荷分散ハードウェアを使用してE-BusinessSuiteを構成する場合、Cookieベースの永続性を設定する必要があることが多くの場所で見られます。ここでの問題は、SSLパススルーが設定されている場合、CookieがEbusiness Suiteによって暗号化され、ロードバランサーが永続性を維持するために必要なCookie情報を読み取ることができないため、Cookieの永続性が機能しないことです。F5からの抜粋です。これをより詳細に説明するドキュメント
出典:
http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/262/Persisting-SSL-Connections.aspx
SSLパススルー構成の場合、永続化オプションは厳しく制限されます。LTMは会話を復号化しないため、セッション内のSSL暗号化されていない情報のみをセッション識別子として使用できます。暗号化されたSSLフローの永続的な暗号化されていない情報の主な部分は、送信元と宛先のIPアドレス、およびSSLセッションID自体であるため、SSLパススルー構成で機能するのは、送信元アドレス、宛先アドレス、またはSSL永続性のみです。送信元アドレスの永続性を使用すると、プロキシタイプのデバイスからシステムにアクセスするクライアントがすべて同じアプリケーション層でスタックし、アプリケーション層でトラフィックの不均衡が発生する状況が発生する可能性があります。そのため、SSLセッションIDなど、よりユニークなものを使用することをお勧めします。
SSL永続性をプライマリ永続化方法として設定し、次にソースアドレスをバックアップ永続化方法として設定して、SSLであっても同じサーバーに新しい接続を固定することをお勧めします。セッションIDは、アプリケーションセッションの途中で変更されます。また、SSLセッションの再ネゴシエーションの数を最小限に抑えるようにアプリケーション層を構成することもベストプラクティスです。詳細については、適切なアプリケーションサーバー管理ガイドを参照してください。そのため、SSL永続性プロファイルと送信元アドレスプロファイル。
ただし、クライアントIPがロードバランサに渡されている場合は、送信元アドレスプロファイルを単独で実行できます。
注:送信元アドレスプロファイルまたはSSLプロファイルは、Oracleが推奨する12時間の値に増やす必要があります。
( b)復号化/暗号化 :この場合のロードバランスは、ロードバランサーレベルでトラフィックを復号化してから、再度暗号化してWebサーバーに送信します。Webサーバーは再び復号化します
2)SSLターミネーター:Webブラウザーとロードバランサー間のトラフィックは暗号化されるだけです。ロードバランスはSSLターミネーターとして機能し、ロードバランサーレベルでSSLを終了し、暗号化されていないトラフィックをWebサーバーに渡します。これには次の利点があります。
管理コストの削減:複数のアプリケーション層で複数の証明書を維持するのではなく、(LBRで)1つの証明書のみを維持する必要がありますパフォーマンスの向上:SSL暗号化と暗号化解除をロードバランサーにオフロードすると、CPUの負荷が軽減され、パフォーマンスが大幅に向上します。現在、お客様には2048バイトのキーを使用したSSL証明書が発行されているため、アプリケーション層でのSSL処理のCPU負荷は、従来の1024バイトのSSLキーを使用する場合の5倍になります。
各トポロジで構成を実行する手順を以下に示します
OracleAppsR12での単一のWebサーバーデプロイメントSSL
ステップ1
環境を設定する
- アプリケーション層ファイルを所有するOSユーザーとしてアプリケーション層にログオンします。
- APPL_TOPディレクトリにあるアプリケーション層環境ファイル(APPS
.env)を入手します。 - $ INST_TOP / ora / 10.1.3に移動し、
.envファイルを入手して、10.1.3ORACLE_HOME変数を設定します。
注:ウォレットと証明書を使用する場合は、10.1.3実行可能ファイルを使用する必要があります。
重要な注意
クライアント(JRE 8、一部の最新ブラウザ)またはOracle Database 12cを使用している場合は、次の手順を実行する必要があります。
– FMW 10.1.3を10.1.3.5にアップグレードします
– 2015年10月のCPUを適用します(パッチ21845960)。
ステップ2
ウォレットを作成する
- $ INST_TOP / certs/Apacheディレクトリに移動します。
- 将来再び使用する場合に備えて、既存のウォレットファイルをバックアップディレクトリに移動します。
- バックグラウンドプロセスとしてウォレットマネージャを開きます:
$ owm &
Oracle Wallet Managerメニューで、「Wallet」>「新規」
に移動します。いいえと答えてください:デフォルトのウォレットディレクトリは存在しません。今すぐ作成しますか?
新しいウォレット画面で、ウォレットのパスワードを入力するように求められます
パスワードを入力して覚えておいてください
新しい空のウォレットが作成されました。この時点で証明書リクエストを作成しますか?
[証明書要求の作成]画面で[はい]をクリックすると、ポップアップが表示されます
適切な値を次の場所に入力します:
一般名 | ドメインを含むサーバーの名前です。 |
組織単位:(オプション) | 組織内のユニット。 |
組織 | これはあなたの組織の名前です |
地域/都市 | それはあなたの地域または都市です。 |
州/県 | は州または県のフルネームです。省略しないでください。 |
ドロップダウンリストから国を選択し、[キーサイズ]に最小で2048を選択します。 [OK]をクリックします。
注:証明書プロバイダーによっては、Oracle Wallet Manager(OWM)によって生成されたMD5ベースの証明書要求(CSR)を受け入れない場合があります。たとえば、VeriSignはSHA12048ビットベースのCSR以降のみを受け入れるようになりました。このような場合、MD5CSRを適切なSHA1ベースのCSRに変換する必要があります。
[リクエストされた証明書について]をクリックします
認証局に送信する前に、証明書要求をエクスポートする必要があります。
- [要求済み]の証明書をクリックして強調表示します。
- メニューから[操作]をクリックします>
証明書リクエストのエクスポート
- ファイルをserver.csrとして保存します
- メニューから[ウォレット]をクリックし、[保存]をクリックします。
- [ディレクトリの選択]画面で、ディレクトリを完全に修飾されたウォレットディレクトリに変更します。
- [OK]をクリックします。
- メニューから[ウォレット]をクリックし、[自動ログイン]チェックボックスをオンにします。
このパスワードは覚えやすいものにしてください。 Oracle Wallet Managerでウォレットを開くとき、またはコマンドライン・インタフェースを使用してウォレットで操作を実行するときは常に、パスワードを使用する必要があります。自動ログインが有効になっている場合、ウォレットを作成したOSユーザーによって送信されたプロセスでは、ウォレットにアクセスするためにパスワードを入力する必要はありません。
- WalletManagerを終了します。
これで、ウォレットディレクトリに次のファイルが含まれるようになります。
cwallet.sso
ewallet.p12
server.csr
これで、server.csrを認証局に送信してサーバー証明書をリクエストできます
ステップ5
サーバー証明書をウォレットにインポートする
認証局からサーバー証明書を受け取ったら、それをウォレットにインポートする必要があります。次のいずれかの方法で、サーバーのウォレットディレクトリにあるtech.crtに証明書をコピーします。
- 証明書をftp(バイナリモードで)
- コンテンツをコピーしてserver.crtに貼り付けます
tech.crtをウォレットにインポートするには、次の手順に従います。
- バックグラウンドプロセスとしてWalletManagerを開きます:
$ owm&
- メニューから[ウォレット]、[開く]の順にクリックします。
- プロンプトが表示されたら「はい」と答えます:
デフォルトのウォレットディレクトリが存在しません。
続行しますか?
- [ディレクトリの選択]画面で、ディレクトリを完全に修飾されたウォレットディレクトリに変更して
[OK]をクリックします
- ウォレットのパスワードを入力し、[OK]をクリックします。
- Oracle Wallet Managerメニューで、「操作のインポート」に移動します
ユーザー証明書。
サーバー証明書は、ユーザー証明書の一種です。認証局がサーバーの証明書を発行し、その識別名(DN)を[件名]フィールドに入力したため、サーバーが証明書の所有者になり、このユーザー証明書の「ユーザー」になります。
- [OK]をクリックします。
- server.crtをダブルクリックしてインポートします。
- ウォレットを保存します:
- OracleWalletManagerメニューでWalletをクリックします。
- [自動ログイン]チェックボックスがオンになっていることを確認します。
- [保存]をクリックします
注:server.crtのチェーンを構成するすべての信頼できる証明書がウォレットに存在しない場合、証明書の追加は失敗します。ウォレットが作成されると、最も一般的なCA(VeriSign、GTE、Entrustなど)の証明書が自動的に含まれていました。証明書を追加する必要がある場合は、認証局に連絡し、提供されたファイルをca.crtとしてウォレットディレクトリにbase64形式で保存します。もう1つのオプションは、以下の手順に従って、サーバー証明書(server.crt)からca.crtを作成することです。認証局が(チェーンを完了するために)中間証明書を提供し、提供されたファイルをintca.crtとしてBase64形式で保存する場合、server.crtをインポートする前にこれをOracleWalletManagerにインポートする必要があります。複数の部分(P7Bタイプなど)で構成される証明書もこのカテゴリに分類されます
認証局の証明書の作成
ca.crtを作成するには
- 次のいずれかの方法を使用して、tech.crtを(必要に応じて)PCにコピーします。
ftp(バイナリモード)tech.crtをPCにコピーし、server.crtの内容をコピーして、PCのメモ帳に貼り付けます。ファイルをserver.crtとして保存します
- server.crtをダブルクリックして、CyrptoShellExtensionで開きます。
- [Certification Path]タブで、最初の(一番上の)行をクリックしてから、[ViewCertificate]をクリックします。
- [詳細]タブで[ファイルにコピー]をクリックすると、エクスポートウィザードが開始されます。
- [次へ]をクリックして続行します。
- Base64でエンコードされたX.509(.CER)を選択し、[次へ]をクリックします。
- [参照]をクリックして、選択したディレクトリに移動します。
- 名前としてca.crtと入力し、[OK]をクリックして証明書をエクスポートします。
- ウィザードを閉じます。
- 次のいずれかの方法を使用して、ca.crtを(必要に応じて)ウォレットディレクトリにコピーして戻します。
ftp(バイナリモード)ca.crtをアプリケーション層ウォレットディレクトリにコピーし、ca.crtの内容をコピーして、テキストエディタを使用してアプリケーション層ウォレットディレクトリの新しいファイルに貼り付けます。ファイルをca.crtとして保存します
中間証明書がある場合は、同じ手法を使用してエクスポートします
スクリーンショット付きの証明書をインポートするための詳細な手順
owm &
次に、[ウォレット]->[開く]をクリックします
[はい]をクリックします
ウォレットディレクトリのフルパスを入力してください
ウォレットのパスワードを入力してください
現在の操作:ユーザー証明書のインポート
または、orapkiコマンドを使用して証明書を追加することもできます
orapki wallet add \
-wallet。 \
-trusted_cert \
-cert ca.crt \
-pwd
orapki wallet add \
-wallet。 \
-trusted_cert \
-cert int.crt \
-pwd
orapki wallet add \
-wallet .\
-user_cert \
-cert tech.crt \
-pwd
重要なステップ
CA証明書をインポートする必要がある場合は、ca.crtファイルの内容を10.1.2 ORACLE_HOME / sysman/configディレクトリにあるb64InternetCertificate.txtファイルに追加する必要もあります。
$ cat ca.crt>> <10.1.2 ORACLE_HOME> /sysman/config/b64InternetCertificate.txt
中間証明書(intca.crt)も提供されている場合は、それをb64InternetCertificate.txtに追加する必要があります。
$ cat intca.crt>> <10.1.2 ORACLE_HOME> / sysman / config / b64InternetCertificate .txt
ステップ6
OPMNウォレットを変更する
- $ INST_TOP / certs/opmnディレクトリに移動します。
- BAKという名前の新しいディレクトリを作成します。
- ewallet.p12ファイルとcwallet.ssoファイルを作成したばかりのBAKディレクトリに移動します。
- ewallet.p12ファイルとcwallet.ssoファイルを$INST_TOP/ certs/Apacheディレクトリから$INST_TOP/ certs/opmnディレクトリにコピーします。
ステップ7
JDKCacertsファイルを更新する
Oracle Web Servicesでは、サーバー証明書(前のステップのca.crt)を発行した認証局の証明書がJDKcacertsファイルに存在する必要があります。さらに、XMLPublisherおよびBIPublisherの一部の機能では、サーバー証明書(前の手順のserver.crt)が存在する必要があります。
次の手順に従って、これらの要件が満たされていることを確認してください。
- $ OA_JRE_TOP / lib/securityディレクトリに移動します。
- 既存のcacertsファイルをバックアップします。
- ca.crtファイルとserver.crtファイルをこのディレクトリにコピーし、次のコマンドを発行して、cacertsに書き込み権限があることを確認します。
$ chmod u+w cacerts
ステップ8
コンテキストファイルを更新する
E-Business Suite – Oracle Applications Manager(OAM)コンテキストエディタを使用して、次の表に示すようにSSL関連の変数を変更します。
コンテキストファイル内のSSL関連変数 | ||
変数 | 非SSL値 | SSL値 |
s_url_protocol | http | https |
s_local_url_protocol | http | https |
s_webentryurlprotocol | http | https |
s_active_webport | s_webportと同じ | s_webssl_portと同じ |
s_webssl_port | 該当なし | デフォルトは4443 |
s_https_listen_parameter | 該当なし | s_webssl_portと同じ |
s_login_page | httpプロトコルとs_webportで構築されたURL | httpsプロトコルとs_webssl_portで構築されたURL |
s_external_url | httpプロトコルとs_webportで構築されたURL | httpsプロトコルとs_webssl_portで構築されたURL |
ステップ9–自動構成を実行する
Autoconfigは、アプリケーション層の$ADMIN_SCRIPTS_HOMEディレクトリにあるadautocfg.shスクリプトを使用して実行できます。
関連記事
自動構成
データベース層とアプリケーション層の両方を含むR12アプリケーションで自動構成を実行する手順
oracleappsのautoconfigテンプレートの場所とautoconfigファイルのテンプレートをカスタマイズする方法
ステップ10–アプリケーション層サービスを再起動します
$ ADMIN_SCRIPTS_HOMEディレクトリのadapcctl.shスクリプトを使用して、アプリケーション層のApacheサービスを停止および再起動します。
OracleアプリR12でSSLターミネータを使用する場合に使用する手順
Webサーバーに証明書を作成してインストールする必要はありません。証明書はSSLターミネーターにインストールされます。この場合、以下に示すコンテキストファイルパラメータを設定する必要があります
SSLアクセラレータを使用する場合の変更 | ||
変数 | 非SSL値 | SSL値 |
s_url_protocol | http | http |
s_local_url_protocol | http | http |
s_webentryurlprotocol | http | https |
s_active_webport | s_webportと同じ | SSLアクセラレータの外部インターフェースポートの値 |
s_webentryhost | s_webhostと同じ | SSLアクセラレータのホスト名 |
s_webentrydomain | s_domainnameと同じ | SSLアクセラレータドメイン名 |
s_enable_sslterminator | # | 「#」を削除して、SSLで終了した環境でssl_terminator.confを使用します |
s_login_page | httpプロトコルとs_webportで構築されたURL | httpsプロトコル、s_webentryhost、s_webentrydomain、s_active_webportで構築されたURL |
s_external_url | httpプロトコルとs_webportで構築されたURL | httpsプロトコル、s_webentryhost、s_webentrydomain、s_active_webportで構築されたURL |
自動構成を実行
Autoconfigは、アプリケーション層の$ADMIN_SCRIPTS_HOMEディレクトリにあるadautocfg.shスクリプトを使用して実行できます。
アプリケーション層サービスを再開します
$ ADMIN_SCRIPTS_HOMEディレクトリのadapcctl.shスクリプトを使用して、アプリケーション層のApacheサービスを停止および再起動します。
ロードバランサーのパススルー構成を使用したエンドツーエンド暗号化の手順
1)単一のWebサーバーに指定されているすべての手順を実行する必要があります。
2)証明書はロードバランサー名で作成する必要があります
3)1つのノードで証明書の手順を実行してから、すべての手順を他のノードにコピーできます
コンテキスト値の変更
コンテキストファイル内のSSL関連変数 | ||
変数 | 非SSL値 | SSL値 |
s_url_protocol | http | https |
s_local_url_protocol | http | https |
s_webentryurlprotocol | http | https |
s_active_webport | s_webportと同じ | s_webssl_portと同じ |
s_webssl_port | 該当なし | デフォルトは4443 |
s_https_listen_parameter | 該当なし | s_webssl_portと同じ |
s_login_page | httpプロトコルとs_webportで構築されたURL | httpsプロトコルとs_webssl_portで構築されたURL |
s_external_url | httpプロトコルとs_webportで構築されたURL | httpsプロトコルとs_webssl_portで構築されたURL |
自動構成を実行
Autoconfigは、アプリケーション層の$ADMIN_SCRIPTS_HOMEディレクトリにあるadautocfg.shスクリプトを使用して実行できます。
アプリケーション層サービスを再開します
$ ADMIN_SCRIPTS_HOMEディレクトリのadapcctl.shスクリプトを使用して、アプリケーション層のApacheサービスを停止および再起動します。
データベースの設定が必要です
Oracle Configurator、Order Management、iStore、Order Capture、Quoting、iPayment、iStore、PricingなどのOracle製品は、HTTPまたはHTTPS接続モードでインターネット経由でデータにアクセスします。 Oracle Database Server(Webサーバーに要求を送信するクライアントとして機能する)のSSLの実装では、OracleWalletManagerを使用してOracleWalletを設定します。
注:これは、Web層でもSSLが有効になっている場合のOracleiStoreストアフロントページの必須要件です。
UTL_HTTPを介したデータベースからのHTTPSクライアント要求を有効にするには、ウォレット形式でトラストストアを確立する必要があります。このウォレットにはサーバー証明書は必要ありません。 UTL_HTTPに接続する必要があるサイトのトラストアンカーであるルートCAのルートCA証明書のみをインポートする必要があります。
1)データベース層の環境を設定したら、$ ORACLE_HOME / appsutilディレクトリに移動します。2)walletという名前の新しいウォレットディレクトリを作成します。
3)新しく作成したウォレットディレクトリに移動します。
4)バックグラウンドプロセスとしてWalletManagerを開きます。
owm&
5)Oracle WalletManagerメニューでWallet->Newに移動します。
NOと答える:デフォルトのウォレットディレクトリ存在しません。今すぐ作成しますか?
新しいウォレット画面で、ウォレットのパスワードを入力するよう求められます。
プロンプトが表示されたら[いいえ]をクリックします。
新しい空のウォレットが作成されました。この時点で証明書要求を作成しますか?6)ca.crtをインポートする必要がある場合:
Oracle Wallet Managerメニューで、「操作」->「信頼できる証明書のインポート」に移動します。
「OK」をクリックします。
ca.crtをダブルクリックしてインポートします。7)ウォレットを保存します。
OracleWalletManagerメニューで[ウォレット]をクリックします。
[自動ログイン]チェックボックスがオンになっていることを確認します。
[保存]をクリックします。 。
ウォレットが適切に設定され、アクセス可能であることをテストするには、appsユーザーとしてSQLPLUSにログインし、次のコマンドを実行します。SQL> select utl_http.request('[address to access]'、'[proxy address]' 、'file:[ウォレットディレクトリへのフルパス]'、null)デュアルから;
ここで:
‘[アクセスするアドレス]’ =E-BusinessSuiteラピッドインストールポータルのURL。
‘[プロキシアドレス]’ =プロキシサーバーのURL、またはプロキシサーバーを使用していない場合はNULL。
‘file:[ウォレットディレクトリへのフルパス]’ =ウォレットディレクトリの場所(実際のウォレットファイルは指定しないでください)。
最後のパラメータはウォレットのパスワードで、デフォルトではnullに設定されています。
関連リンク
Oracle E-Business Suiteリリース12(Doc ID 2143099.1)でSSLまたはTLSを有効にする
R12コンポーネントの検索方法バージョン
40すべてのDBAが知っておくべきパッチの質問
awkコマンド
Keytoolコマンド