ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Serverの保護
11g リリース1(10.3.4)
B61617-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

12 SSLの構成

SSLの構成は省略可能ですが、本番環境ではSSLを使用することをお薦めします。以下の節では、WebLogic ServerにSSLを構成する方法を説明します。


注意:

以下の節は、このリリースのWebLogic Serverのセキュリティ機能を使用するWebLogic Serverデプロイメントと互換性セキュリティを使用するデプロイメントに適用されます。

すべてのマシンにおいて、オペレーティング・システム・ベンダーの最新の推奨パッチを適用しておく必要があります。


SSLの概要

Secure Sockets Layer (SSL)は、ネットワークを介して接続する2つのアプリケーションが互いのIDを認証できるようにするとともに、アプリケーション間で交換されるデータを暗号化することで、セキュアな接続を実現します。認証を使用すると、サーバーは(場合によってはクライアントも)ネットワーク接続の相手側アプリケーションのIDを検証できます。ネットワーク経由で送信されるデータは暗号化されるので、予定されている宛先以外には解釈できません。

WebLogic ServerのSSLは、SSL 3.0およびTLS (Transport Layer Security) 1.0仕様の実装です。


注意:

WebLogic ServerではSSL 2.0はサポートされません。

WebLogic Serverは、専用のリスニング・ポート(デフォルトは7002)でSSLをサポートします。HTTPでSSL接続を確立するには、接続URLにSSLリスニング・ポートとHTTPSプロトコルを指定して(https://myserver:7002など)、WebブラウザからWebLogic Serverに接続します。

SSLを使用すると、計算処理による負荷が大きくなり、接続のオーバーヘッドが増大します。必要なとき以外は開発環境でSSLを使用しないでください。ただし、本番環境では常にSSLを使用してください。

一方向および双方向SSL

SSLは、一方向または双方向として構成できます。

サポートされるJava Secure Socket Extension (JSSE) SSL実装

このリリースのWebLogic Serverでは、Weblogic ServerのCerticom SSL実装がJava Secure Socket Extension (JSSE)ベースのSSL実装に置き換えられています。JSSEは、SSLおよびTLS用のJava標準フレームワークで、ブロッキングIO API、ノンブロッキングIO API、および複数の信頼性のあるCAを含む参照実装が含まれています。

JSSEベースSSL実装は、Certicom SSL実装を使用するWeblogic Serverバージョン8.1以上のインスタンスとSSLを介して相互運用します。つまり、JSSE SSLのWebLogic ServerがSSLクライアントまたはSSLサーバーのいずれかとして使用される場合、Certicom SSL実装を使用するWebLogic Server(バージョン8.1以上)のインスタンスとSSLで通信できます。

JSSEの使用については、「JSSEベースSSL実装の使用」を参照してください。

JSSEの詳細は、『Java Secure Socket Extension (JSSE)リファレンス・ガイド』(http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html)を参照してください。


注意:

Certicom SSL実装のサポートは非推奨になり、今後は削除されます。このため、このリリースのWebLogic Serverでは、Certicom SSLPlus Javaバージョン4.0 SSL実装を引き続きサポートします。

SSLの設定:主な手順

SSLを設定するには:

  1. WebLogic ServerのID (秘密鍵とデジタル証明書)および信頼(信頼性のある認証局の証明書)を取得します。この手順を行うには、WebLogic Serverキットに付属しているデジタル証明書、秘密鍵、および信頼性のあるCA証明書を使用するか、CertGenユーティリティ、Sun Microsystemsのkeytoolユーティリティ、またはEntrustやVerisignなどの信頼できるベンダーを使用します。


    注意:

    CertGenユーティリティを使用して証明書を生成する場合は、「CertGenを使用する場合の制限事項」で使用上の制限事項について確認してください。CertGenによって生成される証明書はデモ専用ですので、本番環境では使用しないようにしてください。

  2. IDと信頼を保存します。IDと信頼を指定する秘密鍵と信頼性のあるCA証明書は、キーストアに格納します。


    注意:

    このリリースのWebLogic Serverでは、ファイルに格納されている秘密鍵および信頼性のあるCA証明書をサポートします。また、下位互換性を保つために、WebLogicキーストア・プロバイダに格納されているものもサポートされます。

  3. WebLogic Server管理コンソールで、WebLogic ServerのIDキーストアと信頼キーストアを構成します。Oracle WebLogic Server管理コンソール・オンライン・ヘルプのキーストアの構成に関する項を参照してください。

  4. WebLogic管理コンソールで、秘密鍵の別名とパスワードに関するSSL構成オプションを設定します。必要な場合、クライアント証明書の提示を必須とする構成オプションを設定します(双方向SSLの場合)。Oracle WebLogic Server管理コンソール・オンライン・ヘルプのサーバー: 構成: SSLに関する項と双方向SSLの構成に関する項を参照してください。


    注意:

    このリリースでは、FIPSモードのJSSEはサポートされません。

    サーバーのSSL実装でFIPS準拠の(FIPS 140-2)暗号モジュールを使用するようにWebLogic Serverインスタンスを設定するには、サーバーの起動スクリプト(startWebLogic.cmd/shなど)に以下を含めます。

    • cryptojFIPS.jarPRE_CLASSPATH変数に追加されます。Weblogic ServerにはRSA Crypto-J 4.1が含まれ、サポートされています。

    • コマンド・ライン引数-Dweblogic.security.SSL.nojce=trueを指定します。

    FIPS 140-2は、重要だが非機密的な使用に関する米国連邦政府の要件が記述された標準です。


WebLogic Server用のIDと信頼の構成については、「秘密鍵、デジタル証明書、信頼性のある認証局の取得」および「秘密鍵、デジタル証明書、信頼性のある認証局の格納」を参照してください。

ホスト名検証の使い方

ホスト名検証では、クライアントの接続先URLのホスト名と、SSL接続の一部としてサーバーが返送するデジタル証明書のホスト名が一致していることを確認します。ホスト名検証は、SSLクライアント(またはSSLクライアントとして機能しているWebLogic Server)がリモート・ホスト上のアプリケーション・サーバーに接続する場合に役立ちます。また、中間者攻撃を防ぐのに役立ちます。

WebLogic Serverではデフォルトでホスト名検証が有効になっています。WebLogic ServerのSSLハンドシェーク機能としての動作は、SSLサーバーのデジタル証明書のSubjectDNにある共通名と、SSL接続の許可に使用するSSLサーバーのホスト名を比較することです。これらの名前が一致しない場合はSSL接続が中断されます。名前が一致しない場合はSSLクライアントが実際にSSL接続を中断します。

デフォルト以外の動作が必要な場合は、ホスト名検証を無効にするか、カスタム・ホスト名検証を構成します。ホスト名検証を無効にすると、WebLogic Serverは中間者攻撃に対して無防備な状態になります。本番環境では、ホスト名検証を有効にしておくことをお薦めします。

デフォルトのWebLogic Serverホスト名ベリファイアを使用する場合、ホスト名の検証は次の両方の条件がある場合に合格します。


注意:

マルチサーバー・ドメインでデモ用のID証明書を使用している場合、管理対象サーバーを管理サーバーの完全修飾DNS名で開始すると、管理対象サーバー・インスタンスの起動に失敗します。制限事項や推奨される回避策の詳細は、「CertGenを使用する場合の制限事項」を参照してください。

ホスト名検証の使い方の詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプにある次のトピックを参照してください。

SSLのデバッグ

SSLデバッグは、SSLハンドシェーク中に発生したSSLイベントに関する詳細な情報を提供します。SSLデバッグのトレースには、以下のものに関する情報が記載されます。

SSLデバッグは、SSLプロセスでALERTが作成されるとスタック・トレースをダンプします。ALERTのタイプと重大度は、Transport Layer Security (TLS)仕様で定義されています。

スタック・トレースは、情報をALERTが発生した場所のログ・ファイルにダンプします。そのため、SSLの問題を追跡する場合は、SSL接続の両側(SSLクライアントとSSLサーバーの両方で)でデバッグを有効にしておく必要があります。ログ・ファイルには、障害が発生した場所に関する詳細な情報が記録されます。ALERTが発生した場所を判別するには、ALERTの後にトレース・メッセージがあるかどうかを確認します。トレース・メッセージの後に受信されたALERTによって、そのピアで障害が発生したことがわかります。問題を判別するには、SSL接続のそのピアでSSLデバッグを有効にしておく必要があります。

SSLの問題を追跡する場合は、ログ・ファイルの情報を調べて次のことを確認します:

SSLデバッグを有効化するためのコマンドライン・プロパティ

次のコマンド・ライン・プロパティを使用してSSLデバッグを有効にします。

-Dssl.debug=true -Dweblogic.StdoutDebugEnabled=true

SSLデバッグ・プロパティは、SSLサーバー、SSLクライアント、およびノード・マネージャの起動スクリプトに含めることができます。ノード・マネージャによって起動される管理対象サーバーに対しては、管理対象サーバーの「サーバーの起動」ページでこのコマンド・ライン引数を指定します。

JSSE使用時のSSLデバッグ

WebLogic ServerがJSSEベースのSSL実装を使用するように構成されている場合(「JSSEベースのSSL実装の使用」を参照)、次のコマンド・ライン・プロパティを使用して追加の詳細デバッグ・ロギングを有効化できます。

-Djavax.net.debug=all

次の点に注意してください。

  • -Dssl.debug=trueおよび-Dweblogic.StdoutDebugEnabled=trueコマンド・ライン・プロパティは、引き続きJSSEに適用されます。このプロパティを使用すると、Weblogic Server内でSSL呼出しコードのデバッグ・ロギングを有効化できます。

  • -Djavax.net.debug=allプロパティを使用すると、JSSEベースのSSL実装内でデバッグ・ロギングを有効化できます。

JSSE SSLロギング・システムでのWebLogicロギング・プロパティの使用に関する詳細は、「JSSE SSLでのデバッグの使用」を参照してください。

JSSEで使用可能なユーティリティのデバッグの詳細情報は、次のURLからダウンロードできる『Java(tm) Secure Socket Extension (JSSE)リファレンス・ガイド』のユーティリティのデバッグに関する項を参照してください。

http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#Debug

SSLセッションの動作

WebLogic Serverでは、SSLセッションをキャッシュできます。これらのセッションは、サーバーの稼働時間にわたって存続します。

SSLソケットを直接使用するクライアントは、SSLセッション・キャッシュの動作を制御できます。SSLセッション・キャッシュは、各SSLコンテキストに固有のものです。特定のSSLコンテキストによって返されたSSLソケット・ファクトリ・インスタンスによって作成されたすべてのSSLソケットは、SSLセッションを共有します。

クライアントは、デフォルトによって同じIPアドレスとポートでセッションを再開します。デフォルトでは、複数のSSLソケットが同じホストとポートを使用してSSLセッションを共有し、SSLソケットが共通の基底SSLコンテキストを使用していると見なします。

SSLセッションを使用するように構成されていないクライアントは、SSLソケットでsetEnableSessionCreation(false)を呼び出してSSLセッションがキャッシュされないようにする必要があります。この設定はSSLセッションがキャッシュに追加されるかどうかだけを制御します。SSLソケットで、すでにキャッシュされたSSLセッションの検索は停止されません。たとえば、SSLソケット1でセッションをキャッシュし、SSLソケット2でsetEnableSessionCreationをfalseに設定しても、SSLソケット1に由来するSSLセッションはキャッシュに格納されているため再利用されることがあります。

SSLセッションはSSLコンテキストの存続期間にわたって存在し、SSLソケットの存続期間によって制御されません。このため、新しいSSLソケットを作成して以前のセッションで使用したのと同じホストとポートに接続する場合、キャッシュ内に以前のSSLセッションを持つSSLコンテキストのSSLソケット・ファクトリを使用してSSLソケットを作成する場合に限り、以前のセッションを再開できます。

デフォルトでは、HTTPS URLを使用するクライアントは、URLごとに新しいSSLセッションを取得します。これは、各URLが異なるSSLコンテキストを使用するため、SSLセッションを共有または再利用できないからです。SSLセッションを取得するには、weblogic.net.http.HttpsClientクラスまたはweblogic.net.http.HttpsURLConnectionクラスを使用します。クライアント間でSSLソケット・ファクトリを共有することにより、クライアントでURLを再開することもできます。

セッション・キャッシングはスレッドによって共有可能なSSLコンテキストによって維持されます。1つのスレッドは1つのSSLセッションではなくセッション・キャッシュ全体にアクセスできるので、複数のSSLセッションを1つ(または複数の)スレッドで使用および共有できます。

以下のコマンド・ライン引数は無視されます。

SSLを使用したRMI over IIOPの構成

SSLを使用すると、RMI (Remote Method Invocation)リモート・オブジェクトへのIIOP (Internet Interop-Orb-Protocol)接続を保護できます。SSLは、認証を通じて接続を保護し、オブジェクト間のデータ交換を暗号化します。

SSLを使用してRMI over IIOP接続を保護するには:

  1. SSLを使用するようにWebLogic Serverを構成します。

  2. SSLを使用するようにクライアントObject Request Broker (ORB)を構成します。SSLの構成については、クライアントORBの製品ドキュメントを参照してください。

  3. host2iorユーティリティを使用して、WebLogic Server IORをコンソールに出力します。host2iorユーティリティでは、SSL接続用と非SSL接続用に2種類のインターオペラブル・オブジェクト参照(IOR)が出力されます。IORのヘッダーは、IORがSSL接続で使用できるかどうかを示します。

  4. SSL IORは、WebLogic Server JNDIツリーにアクセスするCosNamingサービスへの初期参照を取得するときに使用します。

IIOPでのRMIの使用については、『Oracle Fusion Middleware Oracle WebLogic Server RMIのプログラミング』を参照してください。

SSL証明書の検証

WebLogic Serverは証明書チェーンの各証明書が認証局によって発行されたことを保証します。WebLogic Serverで使用するすべてのX509 V3 CA証明書はCAとして定義される基本制御拡張を備えている必要があります。このため、証明書チェーンのすべての証明書が認証局によって発行されたことが確認されます。デフォルトでは、この条件を満たしていない認証局の証明書は拒否されます。この節では、証明書の検証レベルを制御するコマンド・ライン引数について説明します。


注意:

次の点に注意してください。
  • Weblogic Serverは、特定の証明書の処理にRSA Cert-J 3.1を使用します。

  • 証明書検証に合格しない証明書チェーンを持つWebLogic Serverが起動された場合、クライアントでそれを拒否できることを示す情報メッセージがログに記録されます。


証明書検証のレベルの制御

デフォルトでは、WebLogic ServerはCAとして定義される基本制御拡張を持たない証明書チェーンの証明書はすべて拒否します。ただし、この要件を満たさない証明書を使用したり、IETF RFC 2459標準に準拠するようにセキュリティ・レベルを強化したりすることもできます。次のコマンド・ライン引数を使用して、WebLogic Serverで実行される証明書検証のレベルを制御できます。

-Dweblogic.security.SSL.enforceConstraints=option 

表12-1に、コマンド・ライン引数のオプションの説明を示します。

表12-1 -Dweblogic.security.SSL.enforceConstraintsのオプション

オプション 説明

strongまたはtrue

このオプションを使用すると、CA証明書の基本制御拡張が確実にCAとして定義されます。

例:

-Dweblogic.security.SSL.enforceConstraints=strong

または

-Dweblogic.security.SSL.enforceConstraints=true

デフォルトでは、WebLogic Serverはこのレベルの証明書検証を行います。

strong_nov1cas

strongオプションと同等の機能は、前述の行で説明されており、X509バージョン1 CA証明書が拒否される追加の制約があります。

例:

-Dweblogic.security.SSL.enforceConstraints=strong_nov1cas
strict

このオプションを使用すると、CA証明書の基本制御拡張が確実にCAとして定義され、重大(クリティカル)に設定されます。このオプションはIETF RFC 2459標準を強制します。

例:

-Dweblogic.security.SSL.enforceConstraints=strict

市販のCA証明書の一部がIETF RFC 2459標準に準拠していないため、このオプションはデフォルトではありません。

strict_nov1cas

strictオプションと同等の機能は、前述の行で説明されており、X509バージョン1 CA証明書が拒否される追加の制約があります。

例:

-Dweblogic.security.SSL.enforceConstraints=strict_nov1cas
off

このオプションを使用すると、基本制約拡張チェックが無効になります。残りの証明書は引続き検証されます。

例:

-Dweblogic.security.SSL.enforceConstraints=off

このオプションは本番環境では使用しないことをお薦めします。かわりに、IETF RFC 2459標準に準拠した新しいCA証明書を購入してください。ほとんどの商用認証局のCA証明書は、デフォルトのstrongオプションで機能するはずです。


証明書の証明書ポリシーの受け入れ

WebLogic Serverでは、X.509証明書の証明書ポリシー拡張を制限付きでサポートしています。weblogic.security.SSL.allowedcertificatepolicyids引数を使用すると、証明書ポリシーIDのカンマ区切りのリストが得られます。重要な証明書ポリシー拡張付きの証明書が受け取られた場合、許可されている証明書ポリシーのリストに証明書ポリシーがあるかどうか、およびサポートされていないポリシー修飾子の有無が確認されます。このリリースのWebLogic Serverでは、Certification Practice Statement (CPS)ポリシー修飾子はサポートされますが、User Notice修飾子はサポートされません。また証明書は、特別なポリシーanyPolicyを含み、ID 2.5.29.32.0が指定されている場合にも受け入れられます。これは、CAがこの証明書に対してポリシーのセットを制限しないことを示しています。


注意:

weblogic.security.SSL.allowedcertificatepolicyids引数は、JSSEベースのSSL実装が有効化されているとき、WebLogic Serverでは現在サポートされていません。

証明書ポリシーの受け入れを有効にするには、以下の引数を指定してWebLogic Serverを起動します。

-Dweblogic.security.SSL.allowedcertificatepolicyids <identifier1>,<identifier2>,... 

この引数には、証明書ポリシー識別子のカンマ区切りのリストを含める必要があります。このリストは、証明書チェーンに存在し得る重要な拡張付きのすべての証明書に対応し、WebLogic Serverがそのような証明書チェーンを受け入れられるようにルート証明書まで遡るものとします。

証明書チェーンのチェック

WebLogic Server ValidateCertChainコマンド・ライン・ユーティリティを使用すると、既存の証明書チェーンがWebLogic Serverによって拒否されるかどうかを確認できます。このユーティリティは、PEMファイル、PKCS-12ファイル、PKCS-12キーストア、およびJKSキーストアの証明書チェーンを検証します。このユーティリティでは、証明書チェーン全体が使用される必要があります。以下は、ValidateCertChainコマンド・ライン・ユーティリティの構文です。

java utils.ValidateCertChain -file pemcertificatefilename 
java utils.ValidateCertChain -pem pemcertificatefilename 
java utils.ValidateCertChain -pkcs12store pkcs12storefilename 
java utils.ValidateCertChain -pkcs12file pkcs12filename password 
java utils.ValidateCertChain -jks alias storefilename [storePass] 

有効な証明書チェーンの例:

java utils.ValidateCertChain -pem zippychain.pem 

Cert[0]: CN=zippy,OU=FOR TESTING
ONLY,O=MyOrganization,L=MyTown,ST=MyState,C=US

Cert[1]: CN=CertGenCAB,OU=FOR TESTING
ONLY,O=MyOrganization,L=MyTown,ST=MyState,C=US

Certificate chain appears valid

無効な証明書チェーンの例:

java utils.ValidateCertChain -jks mykey mykeystore

Cert[0]: CN=corba1,OU=FOR TESTING ONLY,O=MyOrganization,L=MyTown,ST=MyState,C=US

CA cert not marked with critical BasicConstraint indicating it is a CA
Cert[1]: CN=CACERT,OU=FOR TESTING ONLY,O=MyOrganization,L=MyTown,ST=MyState,C=US

Certificate chain is invalid

証明書の検索と検証のプロバイダ

WebLogic Server SSLには組込みの証明書検証があります。信頼性のあるCAのセットがある場合、この検証では以下のことを行います。

  • チェーンの最後の証明書が、信頼性のあるCAであるか、または信頼性のあるCAによって発行されたものであるかを検証します。

  • 信頼性のあるCAで証明書チェーンを完成させます。

  • チェーン内の署名を検証します。

  • チェーンが期限切れでないことを確認します。

証明書検索および検証(CLV)プロバイダを使用すると、証明書チェーンに対してさらに検証を行うことができます。WebLogic Serverに次の2種類のCLVプロバイダが含まれます。

  • WebLogic証明書パス・プロバイダ - 証明書のパスを完了させ、特定のサーバー・インスタンスのために構成された信頼性のあるCAを使用して証明書を検証します。組込みSSL証明書検証と同じ機能を備えています。デフォルトによって構成されます。

  • 証明書レジストリ - システム管理者によって作成される、サーバーへのアクセスが許可されている信頼性のあるCA証明書のリストです。目的の証明書がこのレジストリに存在すれば、その証明書は有効です。証明書レジストリから証明書を削除すると、その証明書は無効になります。証明書レジストリは、失効チェックを実行するための費用のかからないメカニズムです。これはデフォルトによって構成されません。

また、カスタムCertPathValidatorを作成して、証明書チェーンに対してさらに検証を行うこともできます。『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティ・プロバイダの開発』の「証明書パス・プロバイダ」を参照してください。

WebLogic ServerでのSSL証明書検証の動作

WebLogic Serverインスタンスの発信SSLと双方向着信SSLは、検証が必要な証明書チェーンをSSLハンドシェーク中に受け取ります。双方向着信SSLの例は、HTTPSでWebアプリケーションに接続するブラウザです。この場合、ブラウザはクライアントの証明書チェーンをWebアプリケーションに送信します。着信証明書検証の設定は、サーバーでのすべての双方向クライアント証明書検証のために使用されます。

発信SSLを使用する(SSLクライアントとして動作する)WebLogic Serverの例は以下のとおりです。

  • ノード・マネージャへの接続

  • 管理ポートでの別のWebLogic Serverインスタンスへの接続

  • 外部LDAPサーバー(LDAPAuthenticatorなど)への接続

管理コンソールまたはWLSTを使用すると、SSLMBean属性のInboundCertificateValidationOutboundCertificateValidationで着信および発信SSL証明書検証を別個に構成できます。

これらの属性の有効値は以下のとおりです。

  • BUILTIN_SSL_VALIDATION - 組込みSSL証明書検証コードを使用して証明書チェーンを完成および検証します。つまり、SSLは旧リリースと同じように動作します。これはデフォルトの動作です。

  • BUILTIN_SSL_VALIDATION_AND_CERT_PATH_VALIDATORS - 組込みの信頼性のあるCAに基づいた検証と、構成済みの証明書パス検証プロバイダを使用して追加の検証を実行します。つまり、SSLは旧リリースの動作に加えて、追加の検証を行います。

次を参照してください:

  • Oracle Fusion Middleware Oracle WebLogic Server MBeanリファレンスのSSLMBeanに関する項

  • Oracle WebLogic Server管理コンソール・オンライン・ヘルプのSSLの設定に関する項

証明書検証に関する問題のトラブルシューティング

以前のリリースのWebLogic Serverでは正常に機能していたSSL通信で予期しないエラーが発生するようになった場合は、証明書チェーンが検証に失敗していることが問題になっているおそれがあります。

証明書チェーンが拒否された場所を特定し、受け入れ可能なもので証明書チェーンを更新するか、または-Dweblogic.security.SSL.enforceConstraintsコマンド・ライン引数の設定を変更するかを決定してください。

証明書の問題に対処するには、次のいずれかの解決策を使用します。

  • SSL通信を使用するプロセスの証明書チェーンの場所がわかっている場合は、ValidateCertChainコマンド・ライン・ユーティリティを使用して、証明書チェーンが受け入れられるかどうかをチェックします。

  • SSL通信を使用するプロセスに対してSSLデバッグのトレースを有効にします。SSLデバッグのトレースの構文は、次のとおりです。

    -Dssl.debug=true -Dweblogic.StdoutDebugEnabled=true
    

    注意:

    WebLogic ServerがJSSEベースのSSL実装を使用するように構成されている場合、次のコマンドライン・プロパティを使用して追加の詳細デバッグ・ロギングを有効化できます。

    -Djavax.net.debug=all

    詳細は、「JSSE使用時のSSLデバッグ」を参照してください。


    次のメッセージは、SSLエラーが証明書チェーンの問題によって発生していることを示します。

    <CA certificate rejected. The basic constraints for a CA certificate were not marked for being a CA, or were not marked as critical>
    

    一方向SSLを使用している場合は、クライアント・ログでこのエラーを探してください。双方向SSLを使用している場合は、クライアント・ログとサーバー・ログでこのエラーを探してください。

WebLogic ServerでのnCipher JCEプロバイダの使い方


注意:

Java Cryptography Extension (JCE)プロバイダは、JDK 6.0で入手可能なJCEのアプリケーション・プログラミング・インタフェース(API)を使用して記述されます。このタイプのプロバイダは、WebLogicセキュリティ・サービス・プロバイダ・インタフェース(SSPI)を使用して記述されたプロバイダとは異なります。デフォルトではWebLogic ServerにはJCEプロバイダが用意されていません。

SSLは、Webサーバーで使用できるリソースの保護における重要なコンポーネントです。しかし、大量のSSLトラフィックによって、Webサーバーのパフォーマンスを低下させるボトルネックが発生することがあります。JCEプロバイダは、暗号化用ハードウェア・カードを使用するnCipherと同じように、WebサーバーのSSLプロセスの負荷を軽減し、サーバーがより多くのトランザクションを処理できるようにします。また、キーの整合性と機密性を保持するための強力な暗号化プロセスも提供します。

WebLogic Serverでは、以下のJCEプロバイダの使用がサポートされています。

nCipher JCEプロバイダをインストールするには:

  1. 製品のドキュメントに従って、nCipher JCEプロバイダのハードウェアを設置し、構成します。

  2. nCipher JCEプロバイダのファイルをインストールします。以下のファイルが必要です。

    • 管轄ポリシー・ファイル - これらのファイルはJDKによってデフォルトでインストールされますが、輸出向け強度に制限されています。

    • JARファイルを署名した証明書


      注意:

      この手順は、nCipher JCEプロバイダのハードウェアの設置作業の一部として実行済みになっている場合もあります。その場合は、ファイルが適切にインストールされていることを確認してください。

    • JCEプロバイダJARファイル

    このファイルのインストール方法は以下から選択します。

    • ファイルを拡張としてインストールします。ファイルを以下のいずれかの場所にコピーします。

      JAVA_HOME/jre/lib/ext
      

      例:

      MW_HOME/jdk160_14/jre/lib/ext
      
    • サーバーのCLASSPATHにファイルを指定します。

  3. Javaセキュリティ・プロパティ・ファイル(java.security)を編集して、WebLogic Serverで承認されているJCEプロバイダのリストにnCipher JCEプロバイダを追加します。Javaセキュリティ・プロパティ・ファイルは、以下の場所にあります。

    JAVA_HOME/jre/lib/security/java.security
    

    次のようにnCipher JCEプロバイダを指定します。

    security.provider.n=com.ncipher.provider.km.mCipherKM
    

    nは、特定のプロバイダが指定されていない場合に、リクエストされたアルゴリズムに対してプロバイダが検索される順序を決定する優先順序です。順序は1が基準になり、1が最も優先されます。その後、2、3、...と続きます。

    nCipher JCEプロバイダは、セキュリティ・プロパティ・ファイルでRSA JCAプロバイダの次に来る必要があります。例:

    security.provider.1=sun.security.provider.Sun
    security.provider.2=sun.security.rsa.SunRsaSign
    security.provider.3=com.ncipher.provider.km.mCipherKM
    
  4. WebLogic Serverを起動します。

  5. nCipher JCEプロバイダが正常に機能していることを確認するには、nCipherの製品ドキュメントに従ってデバッグを有効にします。

SSLプロトコルのバージョンの指定

WebLogic Serverでは、SSL V3.0とTLS V1.0の両方のプロトコルがサポートされています。WebLogic ServerがSSLサーバーとして動作する場合、クライアントのハロー・メッセージで指定された方のプロトコルになります。WebLogic ServerがSSLクライアントとして動作する場合、そのSSL V2.0クライアントのハロー・メッセージでTLS1.0が対象プロトコルとして指定されますが、SSLサーバーがサポートする最上位バージョンがSSL V3.0である場合はSSL V3.0も使用できます。ピアはSSL V3.0またはTLS V1.0メッセージで応答する必要があり、応答しなければSSL接続は中断されます。

ほとんどの場合はSSL V3.0プロトコルで問題ありませんが、互換性、SSLのパフォーマンス、セキュリティ要件が最大の環境であるなどの状況によっては、TLS V1.0プロトコルの方が適切なこともあります。weblogic.security.SSL.protocolVersionコマンド・ライン引数を使用すると、SSL接続で使用するプロトコルを指定できます。


注意:

SSL V3.0プロトコルとTLS V1.0プロトコルは入れ替えできません。TLS V1.0プロトコルは、すべての必要なSSLクライアントがそのプロトコルを使用できることが確かである場合にのみ使用します。

次のコマンド・ライン引数を指定すると、WebLogic ServerはSSL V3.0またはTLS V1.0接続のみをサポートします。

JSSEベースSSL実装の使用

Certicomは現在、Weblogic ServerのデフォルトSSL実装です。ただし、JSSEは代替のSSL実装として有効化できます。


注意:

Certicom SSL実装は、現在は非推奨となっており、将来のリリースでJSSEベース実装に置き換えられます。

JSSEベースSSL実装を使用するには、この項の手順に従います。この項の内容は次のとおりです。

JSSEベースSSL実装の有効化と無効化

WebLogic Server用のJSSEベースSSL実装は、次の方法で有効化/無効化できます。

  • WebLogic Server管理コンソールを使用する場合

  • システム・プロパティを使用する場合

  • プログラムを使用する場合

スタンドアロン・クライアント用のJSSEベースSSL実装は、システム・プロパティからも有効化/無効化できます。

以降の項でこれらのオプションについて説明します。

WebLogic Server用JSSEベースSSLの管理コンソールからの有効化/無効化

管理コンソールの「環境」>「サーバー」>「サーバー名」>「構成」>「SSL」>「詳細」ページを使用して、JSSEベースSSL実装を有効化できます。これによって、出力/入力SSL接続の両方に影響が及ぼされます。

次に、「環境」>「サーバー」>「サーバー名」>「制御」>「起動と停止」ページでSSLを再起動する必要があります。

weblogic.ssl.JSSEEnabledシステム・プロパティからのWebLogic Server用JSSEベースSSL実装の有効化/無効化

次のサーバー側システム・プロパティを使用すると、SSLMBean.JSSEEnabled属性を初期化することによって、JSSEベースSSL実装を有効化/無効化できます。

-Dweblogic.ssl.JSSEEnabled=true|false

たとえば、-Dweblogic.ssl.JSSEEnabled=trueを使用すると、JSSEベースSSL実装を有効化できます。

このプロパティによって、出力/入力SSL接続の両方に影響が及ぼされます。

プログラムによるWebLogic Server用JSSEベースSSL実装の有効化/無効化

SSLMBeanには、JSSEベースSSL実装を有効化/無効化し、すでに有効化されているかどうかを判定するための、次のsetter/getterメソッド・ペアが含まれます。これらのメソッドによって、出力/入力SSL接続の両方に影響が及ぼされます。

void setJSSEEnabled(boolean enabled);

boolean isJSSEEnabled();

変更は、次回サーバー再起動時に有効になります。

SSLMBeanの詳細は、Oracle Fusion Middleware Oracle WebLogic Server MBeanリファレンスのSSLMBeanに関する項を参照してください。

スタンドアロン・クライアント用JSSEベースSSL実装の有効化/無効化

スタンドアロン・クライアントでシステム・プロパティweblogic.security.SSL.enableJSSE=true|falseを使用して、JSSEベースSSL実装を有効および無効にします。デフォルトはfalseです。

JSSEベース実装とCerticom SSL実装とのシステム・プロパティの相違

表12-2では、JSSEベースSSL実装によるWebLogicシステム・プロパティの処理の違いを示しています。

表12-2 システム・プロパティの相違

システム・プロパティ JSSEの適用性 説明
weblogic.security.SSL.ignoreHostnameVerification

このプロパティは引き続き機能し、JSSE統合による影響はありません。

証明書のホスト名に対してURLのホスト名を検証しません。

weblogic.ReverseDNSAllowed

このプロパティは引き続き機能し、JSSE統合による影響はありません。

trueに設定すると、逆引きDNSルックアップを使用して、urlhostnameがループバック・アドレス(localhostまたは127.0.0.1、あるいはIPV6に相当するもの)であるかどうかを判断します。

weblogic.security.SSL.trustedCAKeyStore

このプロパティは引き続き機能し、JSSE統合による影響はありません。

キーストアから信頼できるCA証明書をロードします。

weblogic.security.SSL.verbose

このプロパティをjavax.net.debug=allと組み合せて使用し、詳細デバッグ出力をSSL呼出しコードおよびJSSEベース実装から取得します。脚注1

-Dssl.debug=trueが使用される場合の追加のSSLデバッグ用。

ssl.debug=true

このプロパティをjavax.net.debug=sslと組み合せて使用し、デバッグ出力をSSL呼出しコードおよびJSSEベース実装から取得します。脚注1

SSLデバッグ情報をコンソールまたはログに表示します。このプロパティは、呼出し側のWebLogicコード用です。JSSEベースSSL実装には、javax.net.debugプロパティによってアクティブ化される独自のロギング・システムが含まれます。

注意: JSSEロギング(javax.net.debug)をWebLogic SSLロギング(ssl.debug)と別個に設定できます。

weblogic.security.SSL.disableJsseCipherSuiteAliases=true|false

デフォルトはfalseです。

必要に応じて、Certicom暗号スイート名のSunJSSE暗号スイート名への変換を無効化します。デフォルトでは、Certicom暗号スイート名は、JSSEがSSLに使用されているとき、JSSE暗号スイート名に変換されます。

Certicom暗号スイート名とそれに相当するSunJSSEのリストは、表12-3を参照してください。

weblogic.security.SSL.ignoreHostnameVerify

このプロパティは引き続き機能し、JSSE統合による影響はありません。

weblogic.security.SSL.ignoreHostnameVerification」を参照してください。

weblogic.security.SSL.HostnameVerifier=classname

このプロパティは引き続き機能し、JSSE統合による影響はありません。

カスタム・ホスト名検証クラスのクラス名を指定します。

weblogic.security.SSL.protocolVersion=protocol

このプロパティは引き続き機能し、JSSE統合による影響はありません。

サポートされるプロトコルの値は、JSSEでサポートされる同等のプロトコルにマップされます。

「SSLプロトコルのバージョンの指定」を参照してください。

次のうちいずれか。

  • weblogic.security.SSL.allowUnencryptedNullCipher

  • SSLMBean. SetAllowUnencryptedNullCipher(boolean)

  • weblogic.security.disableNullCipher

SunJSSEは次の2つのNull暗号をサポートしますが、デフォルトでは有効ではありません。

  • SSL_RSA_WITH_NULL_MD5

  • SSL_RSA_WITH_NULL_SHA

この設定が有効な場合、この2つのNull暗号は暗号リストに追加されます。

デフォルトでは、この制御は設定されず、Null暗号の使用はサーバーで許可されません。このような構成では、SSLクライアントでNull暗号スイートを使用する場合(唯一のサポート対象暗号スイートとしてSSL_RSA_WITH_NULL_MD5を指定)、SSLハンドシェイクは失敗します。

この制御を設定した場合、Null暗号スイート(SSL_RSA_WITH_NULL_MD5など)が、サポートされる暗号スイートのリストにサーバーによって追加されます。SSL接続では、クライアントが求めた場合にNull暗号スイートが使用する場合があります。Null暗号スイートが使用される合、メッセージは暗号化されません。

注意: 設定の意味とその結果を把握しないかぎり、本番環境ではこの制御を設定しないでください。

weblogic.security.SSL.enforceConstraints=option

Offはサポートされていませんが、他のオプションはサポートされています。

CA証明書の基本制約拡張が確実にCAとして定義されることを確認します。「証明書検証のレベルの制御」を参照してください。

weblogic.security.SSL.allowedcertificatepolicyids

サポートされません。

WebLogic Serverでは、X.509証明書の証明書ポリシー拡張機能に対するサポートが制限されます。「証明書の証明書ポリシーの許可」を参照してください。

weblogic.security.SSL.nojce

サポートされません。

「SSLの設定: 主な手順」を参照してください。


脚注1 このWebLogicシステム・プロパティは、CerticomとJSSEベースSSL実装の両方に適用できます。ただし、JSSEの場合、このプロパティはSSL呼出しコードにのみ影響を及ぼし、JSSEベース実装には影響を及ぼしません。javax.net.debugシステム・プロパティおよびJSSEベースSSL実装のデバッグに関する詳細は、http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#Debugにある『Java Secure Socket Extension (JSSE)リファレンス・ガイド』のユーティリティのデバッグに関する項を参照してください。

サポートされている暗号スイート

JDKデフォルトJSSEプロバイダSunJSSEによってサポートされる暗号化スイート・セットは、次のURLからダウンロードできます。

http://download.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html#SunJSSEProvider

下位互換性用に、JSSEベースSSL実装は、SunJSSEと互換性のある暗号スイートのCerticom暗号スイート名を受け入れます(Certicom暗号スイートのリストは、『Oracle WebLogic Serverセキュリティの理解』の暗号スイートに関する項を参照)。Certicom暗号スイート名は、表12-3で示されるように、通常は「TLS_」接頭辞を「SSL_」に置換することによって、SunJSSEに相当する名前に変換されます。

Certicom暗号スイートとの下位互換性を考慮する上で、次のことを念頭においてください。

  • 有効化またはサポートされる暗号スイートが返される操作の場合、暗号スイートのCerticom名とSunJSSE名の両方が返されます(weblogic.security.SSL.disableJsseCipherSuiteAliases=trueプロパティは、表12-2で示されるように、この動作を無効化します)。

  • 有効化された暗号スイートを指定する操作の場合、相当するCerticom暗号スイート名またはSunJSSE名のいずれかを使用できます。Certicom暗号スイートとそれに相当するSunJSSEは、表12-3にリストされています。

  • _DSS_暗号スイートの場合、NIST FIPS Pub 186で定義されるDSS (Digital Signature Standard)で署名された証明書が必要です。DSAは、FIPS 186で説明されている鍵生成スキーマです。

  • _anon_暗号スイートはデフォルトで無効であり、WebLogic Server管理コンソールで管理できません。これらの暗号スイートのいずれかを有効にするには、DOMAIN_HOME\server\config\config.xmlファイルの<ssl>要素の<ciphersuite>要素を次のように構成します。

    <ssl>
    <name>examplesServer</name>
    <enabled>true</enabled>
    <listen-port>7002</listen-port>
    <ciphersuite>SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA</ciphersuite>
    ...
    
  • Kerberos暗号スイートTLS_KRB5_***を使用するには、KDCアカウントを設定する必要があります。Kerberos要件の詳細は、『Java Secure Socket Extension (JSSE)リファレンス・ガイド』(http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#Debug)を参照してください。

デフォルトでは、Certicom暗号スイート名は、WebLogic ServerがJSSEベースSSL実装を使用するように構成されている場合、SunJSSE暗号スイート名に変換されます。表12-3は、WebLogic Server Certicom SSL実装およびそれに相当するSunJSSEでサポートされる各暗号スイートをリストしています。TLS_名は、Certicom暗号スイート名です。SSL_名は、相当するSunJSSEプロバイダの暗号スイート名です。

表12-3 相当する暗号スイート名

Certicom暗号スイート SunJSSEに相当する暗号スイート
TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
TLS_DHE_DSS_WITH_DES_CBC_SHA
SSL_DHE_DSS_WITH_DES_CBC_SHA
TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_DHE_RSA_WITH_DES_CBC_SHA
SSL_DHE_RSA_WITH_DES_CBC_SHA
TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA
SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA
TLS_DH_anon_EXPORT_WITH_RC4_40_MD5
SSL_DH_anon_EXPORT_WITH_RC4_40_MD5
TLS_DH_anon_WITH_3DES_EDE_CBC_SHA
SSL_DH_anon_WITH_3DES_EDE_CBC_SHA
TLS_DH_anon_WITH_DES_CBC_SHA
SSL_DH_anon_WITH_DES_CBC_SHA
TLS_DH_anon_WITH_RC4_128_MD5
SSL_DH_anon_WITH_RC4_128_MD5
TLS_RSA_EXPORT_WITH_DES40_CBC_SHA
SSL_RSA_EXPORT_WITH_DES40_CBC_SHA
TLS_RSA_EXPORT_WITH_RC4_40_MD5
SSL_RSA_EXPORT_WITH_RC4_40_MD5
TLS_RSA_WITH_3DES_EDE_CBC_SHA
SSL_RSA_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_DES_CBC_SHA
SSL_RSA_WITH_DES_CBC_SHA
TLS_RSA_WITH_RC4_128_MD5
SSL_RSA_WITH_RC4_128_MD5
TLS_RSA_WITH_RC4_128_SHA
SSL_RSA_WITH_RC4_128_SHA

JSSE SSLでのデバッグの使用

「SSLデバッグ」で説明するように、SSLデバッグにより、SSLハンドシェイクで生じたSSLイベントに関する詳細情報が提供されます。

JSSEベースSSL実装が有効化されているときにSSLをデバッグする場合、Certicom SSL実装が有効化されているときと同じデバッグ・ロギング・プロパティを使用できます。これらのロギング・プロパティは、表12-2のリストで説明されています。ただし、JSSEベースSSL実装が有効化されているとき、一部のプロパティはSSL呼出しコードにのみ影響を及ぼし、JSSE実装には影響を及ぼしません。JSSEベースSSL実装には、javax.net.debugプロパティによってアクティブ化される独自のロギング・システムが含まれます。javax.net.debugプロパティは、出力量を超える複数の制御レベルを提供し、WebLogic SSLロギング(ssl.debug)とは別個に使用できます。

javax.net.debugプロパティの詳細は、次のURLからダウンロードできる『Java Secure Socket Extension (JSSE)リファレンス・ガイド』のユーティリティのデバッグに関する項を参照してください。

http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#Debug