web-dev-qa-db-ja.com

X.509(SSL)証明書の可能な用途はどのように示されますか?

X.509証明書は、サーバー、クライアント、電子メール、コード署名などのアプリケーションに使用できます。 http://twitpic.com/6gdxaq は、証明書にさまざまな「機能」を持たせることができることを示していますが、それらをどのように見ますか?これらのさまざまな用途を表すX.509フィールドは何ですか?

5
chris

X.509の「キー使用法」は、発行者が証明書の使用を許可する対象を定義します。ただし、すべてのアプリケーションがこの要件に従うわけではないことに注意してください。

6
efr4k

証明書の使用を制限するいくつかの拡張機能があります。 X.509 に関する限り、拡張のない基本的な証明書は「あらゆる目的に適している」と見なされます。 key typeは、いくつかの結果をもたらす可能性があります。例えばRSA鍵は非対称暗号化と署名の両方で機能しますが、DSA(またはECDSA)鍵は、構造上、署名に対してのみ機能します(ただし、署名のみの証明書は、SSLクライアントまたはサーバーにとっては十分ですが、 「DHE」暗号スイート)。

証明書の「機能」を制限する標準の拡張機能は、次の2つです。

  • Key Usage :これは低レベルの操作を示すフラグのセットです。正確に9つのフラグがあります。digitalSignature、nonRepudiation、keyEncipherment、dataEncipherment、keyAgreement、keyCertSign、cRLSign、encipherOnly、decipherOnlyです。各フラグのセマンティクスは微妙で明確ではありません(たとえば、digitalSignatureとnonRepudiationの違いは、相互運用性よりもはるかに多くの推測の問題です)。

  • Extended Key Usage :これは、次のように表される「許可された使用法」の制限のないリストです [〜#〜] oid [〜#〜] 。事実上、可能なOIDは無限にあるため、可能な拡張キーの使用法の完全なリストはありません。 X.509証明書を使用する各プロトコルまたは標準は、独自の拡張キー使用法を定義することになっています。例えば タイムスタンプ機関 1.3.6.1.5.5.7.3.8を使用します(セクション2.3を参照)。

Microsoftは、独自のCAソフトウェア( "Active Directory Certificates Services")で、標準の拡張機能では不十分であると判断し、 Application Policies と呼ばれる別の名前を定義しました。 Extended Key Usageは、そのエンコード形式が標準の拡張子 Certificate Policies を模倣していることを除いて、ADCSが実際には入力しない追加のオプションのコメントフィールドを取得することを意味します。ADCS alsoは情報を標準のExtended Key Usage拡張として格納するため、この非標準の拡張の正味の効果は混乱を広げることです。

使用制限を伝えようとしたもう1つの古い非標準の拡張機能は netscape-cert-type 拡張機能でした。これにより、前世紀末の4.0回のNetscape Navigatorに戻ることができます。一部のCAでは、実際の相互運用性よりも伝統のために、証明書にこの拡張が含まれています。


拡張機能の内容は、関連するソフトウェアがそれを理解する限りにおいてのみ尊重されます。拡張機能は「クリティカル」とマークできます。つまり、重要でない拡張機能を認識しない実装はそれを無視できますが、不明なクリティカル拡張機能は証明書の無条件の拒否をトリガーする必要があります。それが理論であり、もちろん、実際は異なる場合があります。一部の実装は、重要度フラグを受け入れません。他のものは、重要でない拡張を認識しても無視します。標準の表現も明確ではありません。

クリティカルでない拡張は、認識されない場合は無視される場合がありますが、認識される場合は処理する必要があります。

拡張を認識し、enforcingそのセマンティクス。一部の拡張機能、特に CRL Distribution Points を使用すると、全体像がさらにぼやけます。その意味は、拡張機能がクリティカルとしてマークされているかどうかによって異なります。

3
Thomas Pornin

NSS Technical Note:3、Nelson B. Bolyard に、TLS/SSLに使用される拡張機能の概要があります。

2
Bruno