34 SSL証明書の検証

Oracle WebLogic Serverは証明書チェーンの各証明書が認証局によって発行されたことを保証します。WebLogic Serverで使用するすべてのX.509 V3 CA証明書は、CAとして定義される基本制約拡張機能を備えている必要があります。これにより、証明書チェーンのすべての証明書が認証局によって発行されたことを確認できます。デフォルトでは、この条件を満たしていない認証局の証明書は拒否されます。

この章では、証明書の検証レベルを制御するコマンドライン引数について説明します。

ノート:

  • Weblogic Serverは、特定の証明書の処理にRSA Cert-J を使用します。

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

この章の内容は次のとおりです。

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

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

次のコマンド・ライン引数を使用して、WebLogic Serverで実行される証明書検証のレベルを制御できます。

-Dweblogic.security.SSL.enforceConstraints=option 

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

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

オプション 説明

strongまたはtrue

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

たとえば:

-Dweblogic.security.SSL.enforceConstraints=strong

または

-Dweblogic.security.SSL.enforceConstraints=true

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

strong_nov1cas

strongオプションと同等の機能は、前述の行で説明されており、X.509バージョン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オプションと同等の機能は、前述の行で説明されており、X.509バージョン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には、証明書チェーンに対して検証を実行する組込みの証明書検証があります。WebLogic Serverには、証明書チェーンに対してさらに検証を行うために、証明書ルックアップと2つの検証(CLV)プロバイダが組み込まれています。

信頼性のあるCAのセットがある場合、この検証では以下のことを行います。

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

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

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

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

WebLogic Serverに次の2つのCLVプロバイダが含まれます。

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

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

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

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

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

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

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

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

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

『Oracle WebLogic Serverの理解』システム管理ツールとAPIの概要に関する項に示されている管理ツールのいずれかを使用し、SSLMBean属性(InboundCertificateValidationおよびOutboundCertificateValidation)を使用して、インバウンドとアウトバウンドのSSL証明書検証をそれぞれ構成できます。

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

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

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

次を参照してください:

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

以前のリリースのWebLogic Serverでは正常に機能していたSSL通信で予期しないエラーが発生するようになった場合は、証明書チェーンが検証に失敗していることが問題になっているおそれがあります。証明書チェーンが拒否された場所を特定し、受け入れられる証明書チェーンに更新するか、または-Dweblogic.security.SSL.enforceConstraintsコマンドライン引数の設定を変更するかを決定してください。

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

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

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

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

    ノート:

    次のコマンドライン・プロパティを使用して、追加の詳細デバッグ・ロギングを有効にできます。

    -Djavax.net.debug=all

    「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を使用している場合は、クライアント・ログとサーバー・ログでこのエラーを探してください。