目次
R12.1でTLSを有効にする方法の概要
- WebブラウザとWebサーバー間のデータは、R12アプリケーションでは暗号化されずに移動するため、パスワードやその他の情報をスニファで追跡できます。 R12にTLSを実装することで、これを回避しています。
- TLSの実装では、データは暗号化された形式で送信され、WebブラウザとWebサーバーのみがデータを復号化できます。実装には、SSL証明書と、構成に従ってR12環境での構成が必要です
トランスポート層セキュリティ(TLS)
トランスポート層セキュリティ(TLS)は、SSLの後継です。 TLSは、SSLと同様に、クライアントとサーバー間のトラフィックを暗号化するプロトコルです。 TLSは、2台のマシン間に暗号化された接続を作成し、盗聴、データの改ざん、またはメッセージの偽造の問題なしに個人情報を送信できるようにします。
SSLとは何ですか?
SSLは、安全なトランザクションのための相互認証、データ暗号化、およびデータ整合性の重要な機能を定義するテクノロジーです。このような安全なトランザクションでのクライアントとサーバー間のデータ交換は、Secure Sockets Layer(SSL)を使用すると言われています。これは廃止され、今後優先されるTLS参照が優先されます。
SSL/TLSの仕組み
- クライアントはHTTPS接続モードを使用してサーバーにリクエストを送信します。
- サーバーはデジタル証明書をクライアントに提示します。この証明書には、サーバー名、組織とサーバーの公開鍵、CA秘密鍵のデジタル署名などのサーバーの識別情報が含まれています
- クライアント(Webブラウザ)には、すべてのCAの公開キーがあります。デジタル証明書の秘密鍵を復号化します。この検証は、送信者が秘密鍵にアクセスできたため、公開鍵に関連付けられた人物である可能性が高いことを証明します。検証がうまくいくと、サーバーは信頼できるサーバーとして認証されます。
- クライアントは、使用できる暗号化レベルまたは暗号のリストをサーバーに送信します。
- サーバーはリストを受信し、共通の暗号化の最強レベルを選択します。
- クライアントはサーバーの公開鍵を使用して乱数を暗号化し、その結果をサーバーに送信します(サーバーのみが秘密鍵を使用して復号化できる必要があります)。次に、両方の当事者が乱数を使用して、セッション中にデータを暗号化および復号化するための一意のセッションキーを生成します。
したがって、上記の手順から明らかなように、Webサーバーのデジタル証明書が必要になります。
重要な注意
以前にも記事を読みました
OracleAppsR12でSSLまたはTLSを有効にする
- 上記の記事は、OracleAppsR12.0およびR12.1バージョンでのSSLV3/TLS1.0の実装手順を示しています。
- この記事では、R12.1でのTLS 1.0 / 1.1/1.2実装の手順について具体的に説明します
R12.1でTLSを有効にするには、R12実装のトポロジによって異なります。私はここですべての主要なものを強調しています。
- 単一のウェブサーバー展開。
これは非常に簡単です。 Webサーバーのデジタル証明書が必要になります。手順は簡単です。 WebブラウザとWebサーバー間のトラフィックは暗号化されます
- 2つ以上のウェブサーバーにサービスを提供するロードバランサーがあると、少し複雑になります
この場合、次のオプションがあります
- トラフィックのエンドツーエンド暗号化
ブラウザからロードバランサーへ、およびロードバランサーからウェブサーバーへのトラフィックフロー全体が暗号化されます
それを行うには2つの方法があります
- パススルー構成 :この場合の負荷分散は、メッセージを復号化/暗号化せず、トラフィックを通過してWebサーバーに送信するだけです
- 復号化/暗号化 :この場合のロードバランスは、ロードバランサーレベルでトラフィックを復号化してから、再度暗号化してWebサーバーに送信します。Webサーバーは再び復号化します
- SSLターミネータ:Webブラウザとロードバランサー間のトラフィックは暗号化されているだけです。ロードバランスはSSLターミネーターとして機能し、ロードバランサーレベルでSSLを終了し、暗号化されていないトラフィックをウェブサーバーに渡します。
各トポロジでR12.1でTLSを有効にする手順を以下に示します
単一のウェブサーバー展開
ステップ0 :前提条件
1)最小のJava Development Kit(JDK)7にアップグレードします。
これを行うには、My Oracle Support Document 1467892.1、Using JDK 7.0最新アップデートとOracleE-BusinessSuiteリリース12.0および12.1の手順に従います。
2)– Oracle HTTP Server(OHS)10.1.3.5にアップグレードします。
これを行うには、My Oracle Support Knowledge Document 454811.1、最新のOracle AS10g10.1.3.xパッチへのアップグレードの手順に従います。 Oracle E-Business Suiteリリース12に設定。
3)–2015年10月以降のCPUをOracleFusion Middleware10.1.3.5に適用します。
UNIXの場合はパッチ21845960、Windowsの場合はパッチ21845962をMyからダウンロードします。 Oracleサポートおよびドキュメント2051000.1、Oracle E-Business Suiteリリース11iおよび12の重要なパッチ更新ナレッジドキュメント(2015年10月)の指示に従います。
4)–プラットフォーム固有の更新を適用します。
AIXおよびHPの場合Itaniumのみ、パッチ21948197をOracle Fusion Middleware 10.1.3.5にも適用します。
Windowsのみの場合、パッチ22251660もOracleFusionMiddleに適用します。 ware10.1.3.5。
5)–パッチ22447165および22458773をOracle Fusion Middleware10.1.3.5に適用します。
6)–製品固有のパッチを適用します。
•OracleWorkflow –パッチ22974534を適用します。 R12.OWF.Bを使用して、Oracle Workflow Notification Mailerの問題に対処します。
•OracleiProcurement– My Oracle Support Knowledge Document 1937220.1に記載されているパッチを適用し、サプライヤサイトがSSLv3から適切なアプリケーションバージョンに対応するTLSプロトコル(SSLハンドシェイクSSLIOClosedOverrideGoodbyeKissを使用)。
•OracleiPayment –支払い構成について、ドキュメント1573912.1、OraclePaymentsリリース12ウォレットおよび支払いデータ暗号化のすべてにリストされている要件を満たしていることを確認します。 。さらに、パッチ22724663:R12.IBY.Bを適用します。
•Oracle XML Gateway – Oracle E-Business Suiteリリース12.1のパッチ要件については、ドキュメント1961140.1、OracleEでのSSL/TLS認証用のOracleXMLGatewayの構成を参照してください。 -BusinessSuiteリリース12.1。さらに、パッチ22922530:R12.ECX.Bを適用します。
ステップ1
環境を設定する
- アプリケーション層ファイルを所有するOSユーザーとしてアプリケーション層にログオンします。
- APPL_TOPディレクトリにあるアプリケーション層環境ファイル(APPS
.env)を入手します。 - $ INST_TOP / ora / 10.1.3に移動し、
.envファイルを入手して、10.1.3ORACLE_HOME変数を設定します。 - ディレクトリ$INST_TOP/ certs/Apacheに移動します
次のように、そのディレクトリにホスト固有のOpenSSL構成ファイルを作成します
cat new.cnf [req] prompt = no default_md = sha256 distinguished_name = dn req_extensions = ext [dn] CN = www.example.com O = Example Inc OU = Key Team L = San Diego ST = California C = US [ext] subjectAltName = DNS:www.example.com,DNS:example.com
説明
[req] prompt = no do not prompt default_md = sha256 the default message digest should be sha256 based distinguished_name = dn get the Distinguished Name from the [dn] section req_extensions = ext get the extensions from the [ext] section [dn] CN = www.example.com set Common Name to your full hostname O = Example Inc set the Organization to your company name OU = Key Team set Organizational Unit to any team or division within your company L = San Diego set Location to the city of your company's head quarters ST = California set State to the state or province or territory of your company's head quarters C = US set Country to the ISO country code of the county [ext] subjectAltName = DNS:www.example.com,DNS:example.com specify alternate hostnames.If the hostname of your site is WWW.<domain> also add the domain without the leading WWW. here.Otherwise just repeat the Common Name.
この場合、ファイルは
cat new.cnf
[req]
prompt = no
default_md = sha256
distinguished_name = dn
req_extensions = ext
[dn]
CN = www.techgoeasy.com
O = techgoeasy
OU = tech
L = Los Angles
ST = California
C = US
[ext]
subjectAltName = DNS: www.techgoeasy.com,DNS:techgoeasy.com
覚えているなら、これはSSLを使用したウォレットで行うのと似ています
ステップ2認証生成用のCSRファイルを作成します
(a)パスを更新
PATH=$<10.1.3 OH>/Apache/open_ssl/bin:$PATH
(b)LD_LIBRARY_PATHにOracle Fusion Middleware 10.1.3 ORACLE_HOME/libへのパスが含まれていることを確認してください。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:< FMW 10.1.3 ORACLE_HOME>/lib
(c)ここで、次のコマンドを実行します。
openssl req -newkey rsa:2048 -nodes -keyout server.key -sha256 -out new.csr -config new.cnf
csrを認証局に送信して、証明書を取得します
ここではOracleウォレットを使用していません
ステップ3CAからサーバー証明書と証明書チェーンファイルを受信します。
CAから、次のものを受け取ります。
1)CA署名付きサーバー証明書
2)ルートCAの証明書
3)必要な中間CAの証明書
ファイルを1つだけ受け取った場合は、以下の方法でこれらのファイルを作成できます
認証局の証明書の作成
ca.crtを作成するには
- 次のいずれかの方法を使用して、server.crtを(必要に応じて)PCにコピーします。
ftp(バイナリモード)server.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として保存します
上記のファイルを、サーバーの秘密鍵と同じディレクトリserver.keyに配置します。
サーバー証明書ファイルがserver.crtと呼ばれ、ルートCA証明書がca.crtと呼ばれ、中間証明書がintermediate.crtと呼ばれるファイルにあることを確認する必要があります。
中間証明書がない場合、次のコマンドを実行して、空のintermediate.crtファイルを作成します
echo -n > intermediate.crt
$ INST_TOP / certs/Apacheディレクトリに次のファイルが含まれていることを確認します
server.key
new.csr
server.crt
intermediate.crt
ca.crt
次のコマンドを実行して、サーバー証明書と中間証明書を含むOPMNの証明書ファイルを作成します。
cat server.crt internal.crt ca.crt> opmn.crt
ステップ4 コンテキストファイルを更新する
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 |
ステップ5追加の構成を実行します 。
カスタムディレクトリまたはカスタマイズされたテンプレートファイルがまだ存在しない場合は、元のファイルを
Replace this line in the template:
<ssl enabled="true" wallet-file="%s_web_ssl_directory%/opmn"/>
With the following:
<ssl enabled="true" openssl-certfile="%s_web_ssl_directory%/Apache/opmn.crt" openssl-keyfile="%s_web_ssl_directory%/Apache/server.key" openssl-password="dummy" openssl-lib="%s_weboh_oh%/lib" ssl-versions="TLSv1.0,TLSv1.1,TLSv1.2" ssl-ciphers="AES128-SHA,DES-CBC3-SHA"/>
The instructions here are to comment out one line and to add a new line to reference mod_ssl.so. Modify the following <IfDefine SSL> LoadModule ossl_module libexec/mod_ossl.so </IfDefine> To the following: <IfDefine SSL> #LoadModule ossl_module libexec/mod_ossl.so LoadModule ssl_module libexec/mod_ssl.so </IfDefine>
Step 1 - Comment out the following line in the template: #SSLWallet file:%s_web_ssl_directory%/Apache Step 2 - Add the following 3 lines into the template: SSLCertificateFile %s_web_ssl_directory%/Apache/server.crt SSLCertificateKeyFile %s_web_ssl_directory%/Apache/server.key SSLCertificateChainFile %s_web_ssl_directory%/Apache/intermediate.crt Step 3 - Replace the following: SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM With the following: SSLCipherSuite HIGH:MEDIUM:!aNULL:!RC4:!SEED:!IDEA:!CAMELLIA:+HIGH:+MEDIUM tep 4 - Replace the following: SSLProtocol -all +TLSv1 +SSLv3 With the following: SSLProtocol all -SSLv2 -SSLv3
ステップ6 追加の構成を実行して、TLS1.1とTLS1.2を有効にします
次の変更により、Java7ではデフォルトで有効になっていないTLS1.1およびTLS1.2プロトコルが有効になります。
カスタムディレクトリまたはカスタマイズされたテンプレートファイルがまだ存在しない場合は、以下の表に記載されている元のファイルを
カスタムテンプレートファイル | 変更 |
( | 追加:
https.protocols =TLSv1、TLSv1.1、TLSv1.2 |
ステップ7b64InternetCertificate.txtトラストストアを更新します 。
ca.crtファイルの内容を10.1.2ORACLE_HOME/ sysman/configディレクトリにあるb64InternetCertificate.txtファイルに追加します。
$ cat ca.crt>> <10.1.2 ORACLE_HOME> /sysman/config/b64InternetCertificate.txt |
ステップ8–cacertsTrustStoreを更新します 。
サーバー証明書を商用CAから購入した場合、ルートCA証明書はすでにcacertsに存在するため、この手順を実行する必要はほとんどありません。 keytoolコマンドは、cacertsにすでに存在する証明書を追加しようとした場合に通知します。
次の手順に従って、これらの要件が満たされていることを確認してください。
- $ OA_JRE_TOP / lib/securityディレクトリに移動します。
- 既存のcacertsファイルをバックアップします。
- ca.crtファイルをこのディレクトリにコピーし、次のコマンドを発行して、cacertsに書き込み権限があることを確認します
$ chmod u+w cacerts
Apache ca.crtをcacertsに追加します:
$ keytool -importcert -alias ApacheRootCA -file ca.crt -v -keystore cacerts
プロンプトが表示されたら、キーストアのパスワードを入力します(デフォルトのパスワードは「changeit」です)。
Apache ca.crtをcacertsに追加します:
$ keytool -importcert -alias ApacheRootCA -file ca.crt -v -keystore cacerts
プロンプトが表示されたら、キーストアのパスワードを入力します(デフォルトのパスワードは「changeit」です)。
Apache ca.crtをcacertsに追加します:
$ keytool -importcert -alias ApacheRootCA -file ca.crt -v -keystore cacerts
プロンプトが表示されたら、キーストアのパスワードを入力します(デフォルトのパスワードは「changeit」です)。
$ chmod u-w cacerts
ステップ9–自動構成を実行する
Autoconfigは、アプリケーション層の$ADMIN_SCRIPTS_HOMEディレクトリにあるadautocfg.shスクリプトを使用して実行できます。
ステップ10–アプリケーション層サービスを再起動します
$ ADMIN_SCRIPTS_HOMEディレクトリのadapcctl.shスクリプトを使用して、アプリケーション層のApacheサービスを停止および再起動します。
SSLターミネーターを使用する際に使用する手順
Webサーバーに証明書を作成してインストールする必要はありません。この場合、以下に示すコンテキストファイルパラメータを設定する必要があります
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サービスを停止および再起動します。
ロードバランサーでの暗号化/復号化によるエンドツーエンド暗号化の手順
1)単一のWebサーバーに指定されているすべての手順を実行する必要があります。
2)証明書は、ロードバランサーレベルとWebノードレベルでも作成する必要があります。両側にロードバランサー名を付けて作成する必要があります
3)1つのWebノードで証明書の手順を実行してから、すべての手順を他のノードにコピーできます
4)負荷分散には、Webノード証明書用のクライアント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 |
自動構成を実行
Autoconfigは、アプリケーション層の$ADMIN_SCRIPTS_HOMEディレクトリにあるadautocfg.shスクリプトを使用して実行できます。
アプリケーション層サービスを再開します
$ ADMIN_SCRIPTS_HOMEディレクトリのadapcctl.shスクリプトを使用して、アプリケーション層のApacheサービスを停止および再起動します。
追加の構成
データベース層のセットアップ
Oracle Configurator、Order Management、Order Capture、Quoting、iPayment、iStore、PricingなどのOracle製品は、データベースをHTTPクライアントとして活用しています。 Oracle Database Server(Webサーバーに要求を送信するクライアントとして機能する)のTLSの実装では、OracleWalletManagerを使用してOracleWalletを設定します。
UTL_HTTPを使用してデータベースからのHTTPSクライアント要求を有効にするには、ウォレット形式でトラストストアを確立する必要があります。このウォレットにはサーバー証明書は必要ありません。 UTL_HTTPに接続する必要があるサイトのトラストアンカーであるルートCAのルートCA証明書のみをインポートする必要があります。
- データベース層の環境を設定したら、$ ORACLE_HOME/appsutilディレクトリに移動します。
- walletという名前の新しいウォレットディレクトリを作成します。
- 新しく作成されたウォレットディレクトリに移動します。
- バックグラウンドプロセスとしてOracleWalletManagerを開きます。
owm &
- Oracle Wallet Managerメニューで、 Walletに移動します>新規 。
NOと答える:デフォルトのウォレットディレクトリが存在しません。今すぐ作成しますか?新しいウォレット画面で、ウォレットのパスワードを入力するように求められます。プロンプトが表示されたら[いいえ]をクリックします。新しい空のウォレットが作成されました。この時点で証明書リクエストを作成しますか? - ca.crtをインポートする必要がある場合は、OracleWalletManagerメニューで操作に移動します。>信頼できる証明書をインポートする 。 [ OK ]をクリックします 。 ca.crtをダブルクリックしてインポートします。
- ウォレットを保存する:Oracle Wallet Managerメニューで、ウォレットをクリックします。 。 を確認します 自動ログイン チェックボックスがオンになっています。 [保存]をクリックします 。
ウォレットが適切に設定され、アクセス可能であることをテストするには、アプリユーザーとしてSQLPLUSにログインし、以下を実行します。
SQL> select utl_http.request(‘[address to access]’、‘[proxy address]’、‘file:[full path to wallet directory]’、null)from dual;
ここで:
「[アクセスするアドレス]」 =Oracle E-BusinessSuiteラピッドインストールポータルのURL。
‘[プロキシアドレス] ‘=プロキシサーバーのURL。プロキシサーバーを使用していない場合はNULL。
‘file:[ウォレットディレクトリへのフルパス]’ =ウォレットディレクトリの場所(実際のウォレットファイルは指定しないでください)。
最後のパラメータはウォレットのパスワードで、デフォルトではnullに設定されています。
例:
SQL>select utl_http.request('https://www.oracle.com/robots.txt','http://www-proxy.com:80', 'file:/d1/oracle/db/tech_st/12.1.0/appsutil/wallet', null) from dual;
SQL>select utl_http.request('https://www.oracle.com/robots.txt',null, 'file:/d1/oracle/db/tech_st/12.1.0/appsutil/wallet', null) from dual;
ウォレットが適切に設定されている場合、HTMLページの最初の2,000文字が返されます。
関連リンク
Oracle E-Business Suiteリリース12(Doc ID 2143099.1)でSSLまたはTLSを有効にする
R12コンポーネントの検索方法バージョン
40すべてのDBAが知っておくべきパッチの質問
awkコマンド
Keytoolコマンド