web-dev-qa-db-ja.com

SSL証明書とX.509証明書の違いは何ですか?

opensslを使用してX.509証明書を作成しましたが、X.509とSSL証明書の関係がよくわかりません。彼らは同じですか? SSL証明書は、SSLに使用される単なるX.509証明書ですか?

47
vernomcrp

SSLはX.509証明書の最大の用途であり、多くの人が同じ意味でこの用語を使用しています。ただし、同じではありません。 「SSL証明書」は、拡張キー使用法のX.509証明書です:サーバー認証(1.3.6.1.5.5.7.3.1)。

他の「一般的な」タイプのX.509証明書には、クライアント認証(1.3.6.1.5.5.7.3.2)、コード署名(1.3.6.1.5.5.7.3.3)があり、その他のいくつかはさまざまな暗号化や認証スキーム。

49
Chris S

X.509証明書 は、汎用的で柔軟性の高い形式です。 [〜#〜] ssl [〜#〜] (現在「TLS」として知られています)はX.509証明書を使用します。 「SSL証明書」とは、SSLで使用できるようにする内容の証明書です(通常、SSLserverで使用できます)。

特に、SSLのほとんどの使用法では、clientは証明書で目的のサーバー名を確認する必要があります。 Webコンテキスト(HTTPS)では、「意図したサーバー名」はURLに表示されるものです。クライアントによって実行されるチェックは RFC 2818(セクション3.1) で説明されています。また、クライアントとサーバーが「SSLで通信」すると、使用する暗号化アルゴリズムに同意します。その一部は、証明書に記載されているサーバーの公開鍵の使用を意味します。たとえば、クライアントとサーバーが「RSA鍵交換」という暗号スイートを選択した場合、サーバー証明書にはRSA公開鍵が含まれている必要があり、if証明書には、そのキーを使用する許可された方法を制限する拡張機能が含まれています(例:Key Usage拡張子)、次にこれらの拡張子は「暗号化」の使用を許可する必要があります。これは、SSLの「RSA鍵交換」でそれが暗示されているためです。

証明書の他の機能により、SSLサーバーの使用が禁止される場合があります。「禁止」とは、「クライアントが金切り声を上げて、ユーザーに赤い恐ろしい警告を表示する」ことを意味します。たとえば、証明書にはExtended Key Usage拡張を使用するエンティティの「ロール」の完全なリストをリストします。拡張が存在する場合は、「サーバー認証」または特別な「任意の使用法」インジケーターを含める必要があります。

気になる詳細がたくさんあります。商用CAはすべてを「SSL証明書」として要約します。これは、実際には「SSLのすべてのコーシャであるX.509証明書であり、すべてのクライアントがそれに満足することになる」という意味です。

27
Thomas Pornin