9 トランスポート・レベル・セキュリティの構成(SSL)
SSLの詳細は、『Oracle Web Services Managerの理解』のトランスポート・レベルおよびアプリケーション・レベルのセキュリティの理解を参照してください。
トピック:
9.1 SSLに関するキーストアの構成について
キーストアを構成することによって、OWSMポリシー・マネージャでSSLを使用できます。
ポリシーは、SSLの構成が必要なOWSMポリシーまたは双方向SSLの構成が必要なポリシーのリストに一覧表示されています。
SSLでは、ネットワーク接続している2つのアプリケーションが互いのアイデンティティを認証できるようにするとともに、アプリケーション間でやりとりされるデータを暗号化することでセキュアな接続が実現します。
認証によって、クライアントおよび必要に応じてサーバーが、ネットワーク接続の反対側にあるアプリケーションのアイデンティティを検証できます。暗号化によって、データは意図した受信者以外には解読できない形式でネットワーク上を転送されます。クライアント証明書(双方向SSL)を使用してユーザーを認証できます。
この節では、以下のトピックについて説明します。
9.1.1 WebLogic ServerでのKSSキーストアの構成の理解
OPSSキーストア・サービスでは、メッセージ・セキュリティを確保するためにキーおよび証明書を管理する代替の方式が提供されています。この項では、WebLogic ServerにOPSSキーストア・サービスを構成するために必要な手順の概要を説明します。
『Oracle Platform Security Servicesによるアプリケーションの保護』のキーストア・サービスを使用した鍵と証明書の管理に関する項で説明するように、OPSSキーストア・サービスを使用して、KSSタイプのキーストアを作成および管理します。
詳細は、次の2つの資料を参照してください。
-
Oracle WebLogic Server管理コンソール・オンライン・ヘルプの「サーバー: 構成: キーストア」。
-
『Oracle WebLogic Serverセキュリティの管理 12c (12.2.1)』のキーストアの構成。
この節では、以下のトピックについて説明します。
9.1.1.1 デモ・アイデンティティとデモ信頼に関するOPSSキーストア・サービスの構成
KSSのデモIDキーストアとデモ信頼キーストアは、ドメインの作成時にすでに構成されています。これらのキーストアをさらに構成する必要はありません。
デモ・アイデンティティとデモ信頼のためのOPSSキーストア・サービスを構成するには次の手順を実行します。
9.1.1.2 デモ・アイデンティティとデモ信頼に関するOPSSキーストア・サービスの再作成
KSSデモ・アイデンティティ・キーストアはドメインの作成時に事前構成されます。このキーストアの追加の構成は必要ありません。
ただし、その後KSSデモ・アイデンティティ・キーストアを変更または削除した場合は、この項の説明に従ってキーストアを再作成してください。
Fusion Middleware Controlまたはキーストア・サービス・コマンドのいずれかとWLSTを使用して、OPSSキーストア・サービス操作を実行できます。ここでは、Fusion Middleware Controlの手順について説明していますが、「キーストア・サービスを使用したキーと証明書の管理」では、両方の方法について説明しています。
デモIDおよびデモ信頼に対してOPSSキーストア・サービスを構成するには、次の手順を実行します。
-
Fusion Middleware Controlを起動します。
-
「WebLogicドメイン」メニューから、「セキュリティ」→「キーストア」を選択します。
-
system
ストライプにdemoidentity
という名前のキーストアを作成します。(詳細は、Fusion Middleware Controlでのキーストアの作成に関する項を参照してください。)-
system
ストライプを選択し、「キーストアの作成」をクリックします。図9-1に、「キーストアの作成」ページを示します。
-
このキーストアに
demoidentity
という名前を付けます。 -
保護タイプを「パスワード」に設定します。
-
パスワードを
DemoIdentityKeyStorePassPhrase
に設定し、確認します。 -
「権限の付与」チェック・ボックスの選択を解除します。
-
コード・ベースURLは指定しないでください。
-
-
作成した
demoidentity
キーストアを選択し、「管理」をクリックします。DemoIdentityKeyStorePassPhrase
パスワードを入力します。図9-2に、「証明書の管理」画面を示します。
-
「鍵ペアの生成」をクリックし、公開鍵と秘密鍵のペアを生成します。
図9-3に、「鍵ペアの生成」画面を示します。
-
鍵ペアの別名として
DemoIdentity
を指定します。 -
DemoCertFor_
<WLS Domain Name>
として共通名を指定します。ここで、DemoCertFor_
は必須定数で、<WLS Domain Name>
はWebLogic Serverドメイン名です。たとえば、DemoCertFor_base_domain
のように指定します。注意:
WebLogic Server DefaultHostnameVerifierは、Weblogic Serverドメインのセキュリティ構成で「デモへのKSSの使用」フラグが設定された場合に、この非標準のホスト名形式を受け入れるように変更されています。他のホスト名検証では、この形式がサポートされていない場合があります。
-
必要に応じて、他のサイト固有の情報を指定します。
-
ご使用の環境に適している場合は、デフォルトのRSAキー・サイズを受け入れます。キーの長さは1024ビット以上にする必要があります。
-
パスワードを
DemoIdentityPassPhrase
に指定します。 -
「OK」をクリックします。
-
-
WebLogic Server管理コンソールから、「ドメイン」→「セキュリティ」→「詳細」ページに移動し、「デモへのKSSの使用」チェック・ボックスを選択します。
-
キーストアの構成に関する項で説明しているように、デモIDおよびデモ信頼を使用するようにWebLogic Serverインスタンスを構成します。
-
「WebLogic Serverへの一方向SSLの構成」および「WebLogic Serverへの双方向SSLの構成」の説明に従ってWebLogic ServerインスタンスのSSLを構成します。
WebLogic Server DefaultHostnameVerifierが、非標準の
DemoCertFor_
<WLS Domain Name>
ホスト名形式を受け入れるように変更されていることに注意してください。他のホスト名検証では、この形式がサポートされていない場合があります。 -
WebLogic Serverを再起動します。
9.1.1.3 カスタム・アイデンティティおよび信頼に関するOPSSキーストア・サービスの構成
WebLogic Serverでカスタム・アイデンティティおよび信頼にOPSSキーストア・サービスを使用するには、その前にこのサービスを構成する必要があります。
Fusion Middleware Controlまたはキーストア・サービス・コマンドのいずれかとWLSTを使用して、OPSSキーストア・サービス操作を実行できます。ここでは、Fusion Middleware Controlの手順について説明していますが、「キーストア・サービスを使用したキーと証明書の管理」では、両方の方法について説明しています。
カスタム・アイデンティティおよび信頼のためにOPSSキーストア・サービスを構成するには、次の手順を実行します。
-
Fusion Middleware Controlを起動します。
-
「WebLogicドメイン」メニューから、「セキュリティ」→「キーストア」を選択します。
-
system
ストライプにキーストアを作成します。(詳細は、Fusion Middleware Controlでのキーストアの作成に関する項を参照してください。)-
system
ストライプを選択し、「キーストアの作成」をクリックします。図9-4に、「キーストアの作成」ページを示します。
-
このキーストアに名前を付けます。
-
保護タイプを「パスワード」に設定します。
-
パスワードを設定します。
-
「権限の付与」チェック・ボックスの選択を解除します。
-
コード・ベースURLは指定しないでください。
-
-
作成したキーストアを選択し、「管理」をクリックします。
パスワードを入力します。
図9-5に、「証明書の管理」画面を示します。
-
「鍵ペアの生成」をクリックし、公開鍵と秘密鍵のペアを生成します。
図9-6に、「鍵ペアの生成」画面を示します。
-
鍵ペアの別名を指定します。
-
必要に応じて、サイト固有の情報を指定します。
-
ご使用の環境に適している場合は、デフォルトのRSAキー・サイズを受け入れます。キーの長さは1024ビット以上にする必要があります。
-
パスワードを指定します。
-
「OK」をクリックします。
-
-
このKSSデモCA署名の鍵ペアをそのまま使用することも、Entrust、Verisignなどの信頼できるベンダーから署名証明書を取得することもできます。
信頼できるベンダーから署名証明書を取得するには、鍵ペアの別名を選択し、「CSRの生成」をクリックします。CSRの作成後、それをCAに送信します。CAは証明書リクエストを認証し、リクエストに基づいてデジタル証明書を作成します。
CA署名付き証明書のインポート方法の詳細は、Fusion Middleware Controlを使用した証明書のインポートの「Fusion Middleware Controlを使用した証明書のインポート」を参照してください。
-
事前構成されたOPSSキーストア・サービスの信頼ストア
kss://system/trust
を使用しない場合は、独自の信頼ストアを作成する必要があります。注意:
OPSSキーストア・サービス信頼ストアは信頼構成を簡素化するため、これを使用することをお薦めします。
独自の信頼ストアを作成するには、別のOPSSキーストア・サービスのキーストアを作成し、信頼できる証明書をインポートします。信頼できる証明書のインポート方法の詳細は、『Oracle Platform Security Servicesによるアプリケーションの保護』のFusion Middleware Controlを使用した証明書のインポートを参照してください。
-
キーストアの構成に関する項で説明しているように、カスタムIDおよびカスタム信頼に対してKSSを使用するようにWebLogic Serverインスタンスを構成します。
kss://system/
keystore-name
という形式のURIとしてキーストアに完全修飾パスを指定します。キーストア・タイプはKSSです。 -
「WebLogic Serverへの一方向SSLの構成」および「WebLogic Serverへの双方向SSLの構成」の説明に従ってWebLogic ServerインスタンスのSSLを構成します。
サーバーのSSL属性はすべて動的です。コンソールから属性を変更すると、対応するSSLサーバーまたはチャネルSSLサーバーが再起動され、新しい接続に対して新しい設定が使用されます。古い接続は引き続き古い構成で実行されます。すべてのSSL接続が、指定された構成に従って動作するようにするには、WebLogic Serverを再起動する必要があります。
9.1.2 WebLogic ServerへのJKSキーストアの構成
WebLogic ServerでJKSキーストアを構成できます。
このトピックでは、WebLogic ServerでJKSキーストアを構成するために必要な手順の概要を説明します。
「WebLogic ServerでのKSSキーストアの構成の理解」の説明に従ってKSSキーストア・サービスを使用することが、キーストアを構成する最も便利な方法である場合もあります。ただし、WebLogicデフォルトのアイデンティティ・キーストアDemoIdentity.jksとデフォルトの信頼キーストアDemoTrust.jksを含むJKSキーストアを使用するオプションもあります。
詳細は、次を参照してください。
- Oracle WebLogic Server管理コンソール・オンライン・ヘルプの「サーバー: 構成: キーストア」。
- 『Oracle WebLogic Serverセキュリティの管理 12c (12.2.1)』のキーストアの構成。
WebLogic Serverには、デフォルトのアイデンティティ・キーストアDemoIdentity.jksとデフォルトの信頼キーストアDemoTrust.jksが構成されています。さらに、WebLogic Serverでは、JDKのcacertsファイル内の認証局を信頼しています。このデフォルトのキーストア構成は、テストや開発を目的とする場合に適しています。ただし、これらのキーストアは本番環境では使用しないでください。
サーバーのアイデンティティと信頼を構成する手順は次のとおりです。
9.2 WebLogic Serverへの一方向SSLの構成
一方向SSLでは、サーバーはクライアントに証明書を提示する必要がありますが、クライアントがサーバーに証明書を提示する必要はありません。
「SSLに関するキーストアの構成について」の説明に従ってWebLogic Serverインスタンスのアイデンティティと信頼キーストアを構成したら、そのSSL属性を構成します。これらの属性では、「構成: キーストア」ページで指定したキーストア内のアイデンティティ鍵と証明書の場所を示します。この情報を指定するには、「構成: SSL」ページを使用します。
この項では、WebLogic ServerにSSLを構成するために必要な手順の概要を説明します。詳細は、SSLの構成を参照してください。
SSLを構成するには、次のようにします。
9.3 WebLogic Serverへの双方向SSLの構成
双方向SSLでは、サーバーはクライアントに、またクライアントはサーバーに証明書を提示します。SSLハンドシェイクを完了する前に、クライアントに有効で信頼できる証明の送信を要求するようにWebLogic Serverを構成できます。
「SSLに関するキーストアの構成について」の説明に従って、WebLogic Serverインスタンスのアイデンティティと信頼キーストアを構成した後、使用するポリシーまたはテンプレートで必要な場合は、「双方向SSLの構成が必要なポリシーのリスト」の説明に従って双方向SSL属性を構成できます。
この項では、WebLogic ServerにSSLを構成するために必要な手順の概要を説明します。詳細は、SSLの構成を参照してください。
双方向SSLを構成するには、次の手順に従ってください。
9.4 Webサービス・クライアントへの一方向SSLの構成
中核となるWebLogic Serverのセキュリティ・サブシステムでは、デフォルトのキーストアに格納されている秘密鍵とX.509証明書のペアをSSLに使用します。
WebLogic Serverでリクエストのデジタル署名に使用されるX.509証明書を、Webサービス・クライアントが信頼できるようにする必要があります。次のいずれかの操作を行います。
-
WebLogic Serverが、信頼できる認証局から発行された、クライアントが自動的に信頼するデジタル証明書を取得するようにします。
-
WebLogic Serverが信頼する個々の証明書をすべてリストした証明書レジストリを作成し、クライアントが登録されたこれらの証明書を信頼するようにします。
-
クライアントおよびWebLogic Serverが同じシステムに存在する場合は、同じ信頼ストアを使用します。
Webサービス・クライアントに関する一方向SSLを構成するには、クライアントのJVMで次のプロパティを設定します。
-
javax.net.ssl.trustStore -- 信頼ストアの場所を指定するシステム・プロパティ。JKSの場合、信頼ストアが含まれるファイルの名前です。KSSの場合、KSS URIです。
既存のJKSまたはKSS信頼ストアを使用するか、新規の信頼ストアを作成できます。たとえば、
javax.net.ssl.trustStore
がデフォルトのkss://system/trust
信頼ストアを指し示すことができます。新規JKS信頼ストアを作成するには、keytoolユーティリティを使用できます。新規KSSキーストアを作成するには、Fusion Middleware Controlを使用できます。
-
javax.net.ssl.trustStoreType -- デフォルトのTrustManagerでJKSまたはKSSのいずれかを使用する信頼ストア・オブジェクトのタイプ。
-
javax.net.ssl.trustStorePassword -- JKSのみ。信頼ストアのパスワードを指定します。
Oracle Infrastructure Webサービス・クライアントの場合、ディスクリプタ・ファイルに個々のプロパティを設定することもできます。個々のディスクリプタ・ファイルのプロパティ・セットは、システム・プロパティを使用して、プロパティ・セットをオーバーライドします。
-
SOAコンポジットの場合、
composite.xml
にプロパティを設定します。 -
ADF Webサービス・データ・コントロール(ADFDC)の場合、
connections.xml
にプロパティを設定します。 -
ADFビジネス・コンポーネントおよびWebCenterクライアントの場合、
oracle-webservices-client.xml
にプロパティを設定します。
9.5 Webサービス・クライアントに関する双方向SSLの構成
Webサービス・クライアントに双方向SSLを構成するには、クライアントでリクエストのデジタル署名に使用されるX.509証明書をWebLogic Serverが検証でき、WebLogic Serverがその証明書をクライアントへの応答の暗号化に使用できるようにする必要があります。
注意:
SOAアプリケーションが双方向SSLでのWebサービス・クライアントである場合の特定の構成手順については、Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理の双方向SSL通信のSOAコンポジット・アプリケーションの構成に関する項を参照してください。
Webサービス・クライアントに双方向SSLを構成するには、次のいずれかを行います。
-
信頼性のある認証局で発行されているためにWebLogic Serverが自動的に信頼するデジタル証明書をクライアント・アプリケーションが取得することを確認します。
-
WebLogic Serverによって信頼される個々の証明書をすべて登録する証明書レジストリを作成し、登録された証明書のいずれかをクライアントが使用することを確認します。
-
クライアントおよびWebLogic Serverが同じシステムに存在する場合は、同じキー・ストアおよび信頼ストアを使用します。
Webサービス・クライアントに関するSSLを構成するには、次のプロパティがクライアントのJVMで設定されていることを確認します。
-
javax.net.ssl.keyStore -- キーストアの場所を指定するシステム・プロパティ。JKSの場合、キーストアが含まれるファイルの名前です。KSSの場合、KSS URIです。
既存のJKSまたはKSSキーストアを使用するか、新規のキーストアを作成できます。たとえば、
javax.net.ssl.keyStore
がデフォルトのkss://system/castore
キーストアを指し示し、WebLogic Serverが使用するX.509証明書をWebサービス・クライアントが使用できるようにします。新規JKSキーストアを作成するには、keytoolユーティリティを使用できます。新規KSSキーストアを作成するには、Fusion Middleware Controlを使用できます。
-
javax.net.ssl.keyStoreType -- デフォルトのTrustManagerでJKSまたはKSSのいずれかを使用するKeyStoreオブジェクトのタイプ。
-
javax.net.ssl.trustStore -- 信頼ストアの場所を指定するシステム・プロパティ。JKSの場合、信頼ストアが含まれるファイルの名前です。KSSの場合、KSS URIです。
既存のJKSまたはKSS信頼ストアを使用するか、新規の信頼ストアを作成できます。たとえば、WebLogic Serverが信頼するX.509証明書をWebサービス・クライアントが信頼するように、
javax.net.ssl.trustStore
がデフォルトのkss://system/trust
信頼ストアを指し示すようにできます。新規JKS信頼ストアを作成するには、keytoolユーティリティを使用できます。新規KSSキーストアを作成するには、Fusion Middleware Controlを使用できます。
-
javax.net.ssl.trustStoreType -- デフォルトのTrustManagerでJKSまたはKSSのいずれかを使用するTrustStoreオブジェクトのタイプ。
-
javax.net.ssl.trustStorePassword -- JKSのみ。信頼ストアのパスワードを指定します。
-
HTTPClient.ssl.identityAlias -- アイデンティティに使用する証明書の別名。別名がnullの場合、JSSEプロバイダはキーストア内の別名のいずれかを選択します。
Oracle Infrastructure Webサービス・クライアントの場合、ディスクリプタ・ファイルに個々のプロパティを設定することもできます。個々のディスクリプタ・ファイルのプロパティ・セットは、システム・プロパティを使用して、プロパティ・セットをオーバーライドします。
-
SOAコンポジットの場合、
composite.xml
にプロパティを設定します。 -
ADF Webサービス・データ・コントロール(ADFDC)の場合、
connections.xml
にプロパティを設定します。 -
ADFビジネス・コンポーネントおよびWebCenterクライアントの場合、
oracle-webservices-client.xml
にプロパティを設定します。
9.6 Oracle HTTP ServerでのSSL構成の理解
HTTPSプロトコルは、クライアントとサーバー間で保護された接続を確立するためにSecure Sockets Layer (SSL)と呼ばれる業界標準のプロトコルを使用します。クライアントとWebサービス間で通信するための通信プロトコルの1つとして、Oracle HTTP Serverによって提供されるHTTPS/SSLサポートを使用することもできます。この項では、OWSMポリシーを使用して、SSL経由でリクエストを送信するようにWebサービス・クライアントおよびWebサービスを設定する方法を説明します。
Oracle HTTP Serverは、クライアントとOracle WebLogic Server間を仲介するWebプロキシとして構成されます。Oracle HTTP ServerでSSLが有効であり、またクライアントとOracle HTTP Server間でSSLトランスポートが有効です。Oracle HTTP ServerとWebLogic Server間の通信は非SSLのままです。
詳細は、次を参照してください。
-
『Oracle Fusion Middlewareの管理』のOracle Fusion MiddlewareでのSSL構成に関する項。
-
『Oracle WebLogic Serverセキュリティの管理12c (12.2.1)』のSSLの構成に関する項
-
Oracle WebLogic Server管理コンソール・オンライン・ヘルプのSSLの構成に関する項
-
『Oracle HTTP Server管理者ガイド』のSecure Sockets Layerの構成に関する項
ここでは、一方向SSLおよび双方向SSLを必要とするポリシーを構成する方法について説明します。次のトピックが含まれています:
9.6.1 Oracle HTTP Serverの一方向SSLの構成
この項では、Oracle HTTP Serverでの一方向SSLの構成方法について説明します。
一方向SSL構成を必要とするOWSMポリシーの詳細は、「SSLの構成が必要なOWSMポリシー」を参照してください。
一方向SSLを使用するには、次の手順に従ってください。
-
次の手順に従って、Oracle HTTP Serverを構成します。
-
次の例に示すように、ファイルORACLE_INSTANCE
/config/OHS/<ohs_name>/ssl.conf
で、Oracle HTTP ServerをWebプロキシとして構成し、アクセスするURLのリストを指定します。# added properties for configuring OHS as webproxy <IfModule weblogic_module> WebLogicHost <host> WebLogicPort <port> SecureProxy Off WlProxySSL On Debug ALL WlLogFile /tmp/weblogic.log #the location attributes list the urls you want to access via OHS <Location /myWlsService> SetHandler weblogic-handler WebLogicHost <host> WeblogicPort <port> </Location>
-
同じファイルで、クライアント証明書情報がWebLogic Serverに送信されるように、仮想ホスト構成で次のプロパティを設定します。
SSLVerifyClient optional
-
デフォルトでは、Oracle HTTP ServerでSSLは有効です。デフォルトのhttpsポートは4443です。このポートの構成の詳細は、『Oracle Fusion Middlewareの管理』のOracle Fusion MiddlewareでのSSLの構成に関する項を参照してください。
-
Oracle HTTP Serverを再起動します。
詳細は、『Oracle Fusion Middlewareの管理』のOracle Fusion MiddlewareでのSSLの構成に関する項を参照してください。
-
-
『Oracle Fusion Middlewareの管理』のキーストア、ウォレットおよび証明書の管理に関する項の説明に従ってウォレットを作成し、デフォルトのウォレットを置換します。デフォルトのウォレットは、ORACLE_INSTANCE
/config/OHS/<ohs_name>/keystores/default
ディレクトリ内にあります。次の例は、一方向SSLのウォレットを作成するサンプルのコマンドを示しています。./orapki wallet create -wallet <wallet_location> -pwd password -auto_login ./orapki wallet display -wallet <wallet_location> -pwd password ./orapki cert display -cert <wallet_location>/ohs.crt ./orapki wallet add -wallet <wallet_location> -keysize 512 -dn "CN=<host_name>,OU=st,O=owsm,L=N,ST=delhi,C=IN" -self_signed -validity 700 -serial_num 20 -cert <wallet_location>/ohs.crt -user_cert -pwd password ./orapki wallet display -wallet <wallet_location> -pwd password JAVA_HOME/bin/keytool -import -trustcacerts -file ohs.crt -alias sslcert -keystore client_keystore.jks -storepass password
-
Oracle WebLogic管理コンソールで、次の手順を実行します。
-
「環境」タブの「サーバー」ページに移動します。
-
「AdminServer」をクリックし、「構成」で「一般」を選択します。
-
「詳細」セクションで、「WebLogicプラグインの有効化」および「クライアント証明書プロキシの有効化」を選択していることを確認します。
-
変更を保存します。
-
SOAサーバーに同じパラメータを設定します。
詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのサーバー: 構成: 要約に関する項を参照してください。
-
一方向モード(サーバー認証モード)を使用するようにクライアントを変更するために、JDeveloperを使用してWebサービスからJSEクライアントを作成します。次の例に示されているように、パラメータおよびプロパティを変更します。
public static void main(String [] args) { class1Service = new Class1Service(); SecurityPolicyFeature[] securityFeatures = new SecurityPolicyFeature[] { new SecurityPolicyFeature("oracle/wss_ saml_token_over_ssl_client_policy") }; Class1 class1 = class1Service.getClass1Port(securityFeatures); ((BindingProvider) class1).getRequestContext().put(BindingProvider.ENDPOINT_ ADDRESS_PROPERTY, "https://<host>:4443/myWlsService/Class1Port"); ((BindingProvider) class1).getRequestContext().put(BindingProvider.USERNAME_ PROPERTY, "weblogic"); System.setProperty("javax.net.ssl.trustStore","D:\\OWSM_ QA\\11g\\PS2\\OHS\\wallet\\client_keystore.jks"); System.setProperty("javax.net.ssl.trustStorePassword","password"); System.setProperty("javax.net.ssl.trustStoreType","JKS"); System.setProperty("weblogic.security.SSL.ignoreHostnameVerification" , "true"); System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol"); System.setProperty("javax.net.debug","all"); System.out.println("Call to the SSL service..."); String response1 = class1.sayHello("test"); System.out.println("Response = " + response1); }
9.6.2 Oracle HTTP Serverの双方向SSLの構成
この項では、Oracle HTTP Serverでの双方向SSLの構成方法について説明します。
双方向SSL構成を必要とするOWSMポリシーの詳細は、「双方向SSLの構成が必要なポリシーのリスト」を参照してください。
双方向SSLを使用するには、次の手順を実行します。
-
次の手順に従って、Oracle HTTP Serverを構成します。
-
次の例に示すように、ファイルORACLE_INSTANCE
/config/OHS/<ohs_name>/ssl.conf
で、Oracle HTTP ServerをWebプロキシとして構成し、アクセスするURLのリストを指定します。# added properties for configuring OHS as webproxy <IfModule weblogic_module> WebLogicHost <host> WebLogicPort <port> SecureProxy Off WlProxySSL On Debug ALL WlLogFile /tmp/weblogic.log #the location attributes list the urls you want to access via OHS <Location /myWlsService> SetHandler weblogic-handler WebLogicHost <host> WeblogicPort <port> </Location>
-
同じファイルで、クライアント証明書情報がWebLogic Serverに送信されるように、仮想ホスト構成で次のプロパティを設定します。
SSLVerifyClient optional
SSLOptions +StdEnvVars +ExportCertData
SSLOptions +ExportCertData
は、証明書に関連する情報をWebLogic Serverに送信するようにするmod_sslディレクティブです。SSLOptions +StdEnvVars +ExportCertData
は、SSLに関連する情報を送信するようにします。 -
デフォルトでは、Oracle HTTP ServerでSSLは有効です。デフォルトのhttpsポートは4443です。このポートの構成の詳細は、『Oracle Fusion Middlewareの管理』のOracle Fusion MiddlewareでのSSLの構成に関する項を参照してください。
-
Oracle HTTP Serverを再起動します。
詳細は、『Oracle Fusion Middlewareの管理』のOracle Fusion MiddlewareでのSSLの構成に関する項を参照してください。
-
-
『Oracle Fusion Middlewareの管理』のキーストア、ウォレットおよび証明書の管理に関する項の説明に従ってウォレットを作成し、デフォルトのウォレットを置換します。デフォルトのウォレットは、ORACLE_INSTANCE
/config/OHS/<ohs_name>/keystores/default
ディレクトリ内にあります。双方向SSLのウォレットを作成するサンプルのコマンドについては、次の例を参照してください。JAVA_HOME/bin/keytool -genkey -alias twowayssl -keyalg RSA -keystore twowaykeystore.jks -storepass password -validity 700 ./orapki wallet add -wallet <wallet_location> -cert <wallet_location>/twowayssl.crt -trusted_cert -pwd password
-
Oracle WebLogic管理コンソールで、次の手順を実行します。
-
「環境」タブの「サーバー」ページに移動します。
-
「AdminServer」をクリックし、「構成」で「一般」を選択します。
-
「詳細」セクションで、「WebLogicプラグインの有効化」および「クライアント証明書プロキシの有効化」を選択していることを確認します。
-
変更を保存します。
-
SOAサーバーに同じパラメータを設定します。
詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのサーバー: 構成: 要約に関する項を参照してください。
-
双方向(相互認証モード) SSLを使用するようにクライアントを変更するために、JDeveloperを使用してWebサービスからJSEクライアントを作成します。次の例に従って、パラメータおよびプロパティを変更します。
public static void main(String [] args) { class1Service = new Class1Service(); SecurityPolicyFeature[] securityFeatures = new SecurityPolicyFeature[] { new SecurityPolicyFeature("oracle/wss_saml_token_over_ssl_client_policy") }; Class1 class1 = class1Service.getClass1Port(securityFeatures); ((BindingProvider) class1).getRequestContext().put(BindingProvider.ENDPOINT_ ADDRESS_PROPERTY, "https://<host>:4443/myWlsService/Class1Port"); ((BindingProvider) class1).getRequestContext().put(BindingProvider.USERNAME_ PROPERTY, "weblogic"); ((BindingProvider) class1).getRequestContext().put(BindingProvider.PASSWORD_ PROPERTY, "password"); System.setProperty("javax.net.ssl.trustStore","D:\\OWSM_ QA\\11g\\PS2\\OHS\\wallet\\twowaykeystore.jks"); System.setProperty("javax.net.ssl.trustStorePassword","password"); System.setProperty("javax.net.ssl.trustStoreType","JKS"); System.setProperty("javax.net.ssl.keyStore","D:\\OWSM_QA\\11g\\PS2\\OHS\\wallet\\twowaykeystore.jks"); System.setProperty("javax.net.ssl.keyStorePassword","password"); System.setProperty("javax.net.ssl.keyStoreType","JKS"); System.setProperty("weblogic.security.SSL.ignoreHostnameVerification" , "true"); System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol"); System.setProperty("javax.net.debug","all"); System.out.println("Call to the SSL service..."); String response1 = class1.sayHello("test"); System.out.println("Response = " + response1); }