web-dev-qa-db-ja.com

X.509「クライアント証明書」と通常のSSL証明書の違いは何ですか?

私は、会社が多くの企業顧客のサービスと対話するためのWebサービスをセットアップしています。 SOAPを利用した情報交換を行います。両当事者から提供されたSSL証明書を使用して認証を処理したいのですが、証明書のタイプに基本的な違いがあるかどうか少し迷っています。

人々がHTTPSについて話すとき、彼らはVerisignまたは別の機関からSSL証明書を取得することについて話します。クライアント側の認証について話すとき、彼らはX.509証明書の取得について話します。これらの2つの単語は同じものですか、一方をもう一方に変えることができますか、または私が理解していない他の違いはありますか?

97

X509証明書は、公開鍵と秘密鍵のペアの一種の公開鍵です。これらの鍵ペアは、SSLによる暗号化や識別など、さまざまな目的に使用できます。 SSL証明書はX509証明書の一種です。 SSLは、トラフィックを暗号化し、パーティを検証することで機能します(Verisignは、このWebサイトを、彼らが言うとおりの人物であると信頼しているため、おそらくあなたもそうすることができます)。 Verisignは認証局(CA)として機能します。 CAは、それが言うすべてを真実と見なすべきであると信頼しています(CAの実行には、主要なセキュリティ上の考慮事項が必要です)。したがって、CAが、あなたが本当にあなたであると信頼していると言っている証明書をあなたに与えれば、あなたはユーザー証明書/クライアント証明書を持っています。

これらのタイプの証明書には、全体で使用できるものもありますが、特定のアクティビティでのみ使用できるものもあります。

Windowsで証明書を開く(IEでSSLを参照して証明書のプロパティを確認する)か、certmgr.mscを実行して証明書を表示する場合は、[詳細]タブ> [キーの使用法]を確認します。それは、証明書が何をすることが許可され、何のために使用されるかを決定します。

SOAPの場合、証明書は、識別と暗号化の2つの目的で使用できます。さて、メッセージ署名(メッセージハッシュ)を含める場合は3つです。

クライアント証明書は、呼び出し元のクライアントまたはユーザーを識別します。アプリケーションがSOAP=要求を行うと、証明書をWebサービスに渡して、誰が要求を行っているかを通知します。

65
Steve

TLSでは、サーバーに秘密鍵と証明書(サーバー証明書とも呼ばれる)が必要です。サーバー証明書は、サーバーを識別および認証します。クライアントは、オプションで独自の秘密鍵と証明書(通常、クライアント証明書と呼ばれる)も持つことができます。クライアント証明書を使用する場合は、クライアントを識別して認証します。

ウェブ上でHTTPSを使用すると、通常、サーバーにはサーバー証明書がありますが、クライアント証明書は使用されません。つまり、クライアントは通信しているサーバーを認証できますが、サーバーは接続しているクライアントを認証できません。

ただし、多くのプログラムのコンテキストでは、通常、両方のエンドポイントで相互に認証する必要があります。したがって、サーバー証明書とクライアント証明書の両方を使用する必要があります。

TLSでは、すべての証明書はX.509証明書です。 X.509はデータのフォーマットにすぎません。

証明書には、公開鍵と認証局(CA)からの署名が含まれます。 Webでは、通常、Webサイトにサーバー証明書があり、Verisignまたはその他のよく知られたCAによって発行(署名)されます。 Webブラウザーには、ほぼ100の異なるCAのリストがプリインストールされており、最も広く使用されているWebサイトには、これらのCAのいずれかによって発行されたサーバー証明書があります。たとえば、Verisignは、すべてのブラウザの標準的なCAリストのCAの1つです。 Verisignが証明書を発行してほしい場合は、料金を請求します。

証明書を標準CAで署名する代わりに、自己署名証明書を使用できます。これは、標準CAの1つではなく、自分自身(または任意のユーザー)が発行する証明書です。これは、Web上ではそれほど広く使用されていません。自己署名付きのサーバー証明書により、ブラウザがユーザーに警告ダイアログボックスをポップアップさせ、ほとんどのWebサイトではこれを回避しようとしているためです。ただし、プログラムで使用する場合、自己署名証明書は正常に機能する可能性があります。また、自己署名証明書を使用する場合は、Verisignにお金を支払う必要はありません。 OpenSSLのコマンドラインツールを使用して独自の自己署名証明書を作成する方法に関するチュートリアルを見つけることができます。

SSLはTLSの同義語です。 (技術的には、SSLはいくつかの古いバージョンの規格で使用されていた名前であり、TLSはいくつかの新しいバージョンの規格の新しい名前です。ただし、多くの人が2つの用語を同じ意味で使用しています。)

より役立つ背景については、公開鍵証明書に関する Wikipediaの記事 をお読みになることをお勧めします。

36
D.W.

通常の「通常の」SSL証明書ある X.509証明書。
ただし、これらはサーバーの認証と暗号化にのみ使用できます。証明書の属性の1つは指定された目的であり、通常、別の目的で使用することはできません。
それ以外は、クライアント証明書はサーバー証明書とほとんど同じで、「クライアント認証」と指定されています。

機能的には、一部のシステムではクライアント証明書のサブセットのみを受け入れることを選択することがよくあります。独自のCAによって発行されたもの。

15
AviD

機能的には、それらは同じです。つまり、RSA公開鍵と、当局によって署名された識別情報です。実際には、サーバーキーは通常、問題のドメインを識別する共通名(* .wikimedia.orgなど)で設定されます。証明書が相手側の認証要件と一致する限り、自己生成を含む証明書の使用を制限するものはないと私は考えています。

4
Jeff Ferland