2

Windows 2008 の IIS の下で Tomcat で実行される Web ベースの Java アプリケーションを開発しました。この Web サイトでは、IIS で双方向 (相互) SSL が有効になっており、SSL の一部として x.509 証明書 (PKI) を使用してクライアントを認証する必要があり、これが機能します。 IEを使用したすべての証明書で問題ありません。

Web サイトには、ViewOne ImageViewer という Java アプレットもあります。これは、一部の証明書では双方向 SSL で正常に機能しますが、他の証明書では、ユーザーが認証証明書を選択した後の SSL ハンドシェイク中にクライアント (Java 1.6) で例外が発生します。

セキュリティ: KeyUsage はデジタル署名を許可しません

証明書間の最も明白な違いは、失敗した証明書に EKU (拡張キー使用法) が存在しないことです。動作している証明書には、EKU "Client Authentication - 1.3.6.1.5.5.7.3.2" があります。

Javaアプレットを実行するためにEKU 1.3.6.1.5.5.7.3.2が必要かどうか、またはこれをどこかに設定できるかどうかは誰にもわかりませんか? それとも、他の原因でエラーが発生した可能性がありますか?

ありがとう!

4

1 に答える 1

4

証明書の検証に通常使用される標準は、RFC 5280:インターネットX.509公開鍵インフラストラクチャ証明書および証明書失効リスト(CRL)プロファイルにあります。証明書には、(少なくとも)使用法に関する2つの拡張機能(キー使用法拡張キー使用法)を含めることができます。

  • 主な使用法

Key Usage拡張機能は、クライアント証明書について具体的に説明していません。ただし、この拡張機能が存在する場合はdigitalSignature、SSL / TLSハンドシェイク中に、CertificateVerifyTLSメッセージがこの証明書の秘密鍵で署名されるため、フラグを設定する必要があります。これは、RFC5280のこのセクションに従って必要です。

digitalSignatureビットは、エンティティ認証サービス、データ発信元認証サービス、および/または整合性サービス。

(ほとんどの暗号スイートも必要になりkeyAgreementます。)

  • 拡張キーの使用法

これは、クライアント証明書についてより具体的な場合(拡張機能が存在する場合、推奨されますが、常にそうであるとは限りません):

   id-kp-clientAuth             OBJECT IDENTIFIER ::= { id-kp 2 }
   -- TLS WWW client authentication
   -- Key usage bits that may be consistent: digitalSignature
   -- and/or keyAgreement

これについての詳細は、このNSSテクニカルノートに記載されています(これは他の製品にも当てはまります)。

セキュリティ:KeyUsageはデジタル署名を許可しません」を取得すると、クライアント証明書として使用しようとしている証明書に(拡張されていない)キー使用法が存在することを示しているようですが、それdigitalSignatureは有効になっていません。(これは、これらの証明書を発行したCAが行うべきことです。)

これはアプレットとは関係ありません。ただし、アプレット自体のURLがクライアント証明書認証で保護されている可能性があります。これは、これらの拡張機能が原因で失敗します。

サーバー側の1つは、これをIISの背後で実行しているため、TLS/SSL証明書の検証を処理するのはIISです。Apache Tomcatは、証明書をどこから取得したかを実際に気にする必要はありません。(Javaでは、カスタムを構成することで証明書の検証方法を微調整できますTrustManagerが、これはJava(JSSE)がSSL/TLS接続自体を処理している場合にのみ適用されます。Tomcatが遅れている場合は適用されません。 IIS、Apache Httpd、またはAPRを使用する場合でも。)IISでこれを構成する方法はわかりませんが、netsh httpaddsslcertというオプションがあり[ usagecheck= ] enable | disableます。しかし、それは寛大すぎるかもしれません。(注意して使用してください。)

そうは言っても、証明書が送信される前に、クライアント側でエラーが発生するようです。私は試したことがないことを認めなければなりませんがKeyManager、その証明書の使用を強制する特定のものを使用できる可能性があります。これがうまくいくかどうかは完全にはわかりません。

補足として、アプレットへの署名は別の問題です。アプレットに署名するには、証明書にanyExtendedKeyUsageまたはid-kp-codeSigningの拡張キー使用法が必要です。(それ以外の場合、署名は機能しますが、アプレットの実行は機能しません。)詳細については、http://bugs.sun.com/bugdatabase/view_bug.do ?bug_id=5056088を参照してください。

于 2011-06-23T18:43:35.633 に答える