web-dev-qa-db-ja.com

OpenSSLクライアント証明書とサーバー証明書

証明書に関するいくつかの基本的な質問があります。最初に、SSL認証に関する理解を説明します。

SSL/TLSには基本的に2つの主なものがあります。

  1. 認証-両端の正しい当事者と通信していることを確認します。
  2. 暗号化-両端間で転送される実際のデータを暗号化します。

証明書には、公開鍵といくつかの追加情報が含まれています。クライアント(「C」など)とサーバー(「S」など)間のSSL通信は次のように機能します。

  1. CはSへの要求を開始します。
  2. Sはその公開鍵をCに送信します。
  3. CはSのIDを検証します(サーバーID検証またはサーバー認証)。
  4. Cはその公開鍵をSに送信します。
  5. SはCのIDを検証します(クライアントID検証またはクライアント認証)。
  6. Cは対称キーまたはセッションキー(「K」など)を生成し、S公開キーで暗号化してサーバーに送信します。
  7. これで、CとSの両方に、データの暗号化に使用される共有対称キーがあります。

ここでは、クライアント認証用の手順4と5はオプションであると考えています。私が間違っている場合は修正してください。

ステップ1から5は、暗号化の非対称モード、つまり「認証」のみに関係し、その後、それらの間の実際のデータ転送に暗号化の対称モードが関係します。

私の質問は次のとおりです。

  1. 私はこれから リンク (IISサーバーに関連))には2種類の証明書があることを読みました。1つはクライアント証明書、もう1つはサーバー証明書です。要求を開始するクライアント側の1つはクライアント証明書、もう1つはサーバー証明書ですOpenSSLに対するクライアント証明書とサーバー証明書の違いは何ですか?OpenSSLに対するこれらの証明書のCN名に違いはありますか?

  2. 認証にクライアント証明書を使用するように求められました。サーバー認証をバイパスし、認証にクライアント証明書のみを使用しているということですか?そうは思いません。私の理解では、サーバー認証に加えてクライアント認証を行う必要があります。ここで間違っている場合は修正してください。

23
Prabu

サーバー証明書:

サーバー証明書は、SSLハンドシェイク中に提示されるサーバーの識別情報です。

通常、それらはクライアントによく知られている認証局(CA)によって発行されます。証明書が発行される基準は、サーバーに到達するために使用されるサーバーのホスト名であるWebserverのサーバーの公開識別子の所有です。

Example:-  http://blog.8zero2.in/

サーバー証明書

サーバー証明書の目的

x509拡張パラメーターで明確に言及

Certificate Key usage 

 1. Signing 
 2. Key Encipherment

Signing:-証明書のキーを使用して、証明書のCNに記載されているサーバーのID、つまりエンティティを証明できることを意味します認証.

Key Encipherment:-これは、証明書内のキーを使用して、セッション用に導出されたセッションキー(対称キー)を暗号化できることを意味します

クライアント証明書:-

名前が示すクライアント証明書は、クライアントまたはユーザーを識別するために使用されます。これらは、サーバーに対してクライアントを認証するためのものです。クライアント証明書を保持する目的はさまざまです。通常、証明書のシリアル番号にマップされた、メールアドレスまたはMacアドレスの所有を表します。

クライアント証明書の目的

x509拡張パラメーターで明確に言及

Certificate Key usage 
1. Signing 
9
8zero2.ops

1)リンクする記事は良いものです:-)。別の言い方をすれば、証明書には使用が許可されている用途を示すフィールドがあります。証明書を作成/要求するとき、特定の用途の証明書を要求し、CAはそれに基づいて証明書に署名します。

さまざまな目的でさまざまな証明書を使用し、それぞれの証明書がその目的にのみ使用できるようにする方が安全です。 (または、シニカルになりたい場合は、CAにより、クライアントとサーバーの証明書を別々に購入して、売り上げを増やします。)

たとえば、Webサーバーが自分自身を会社として自分の会社として識別できるようにしたいが、同じ証明書を使用して他の企業への発信接続に署名できるようにしたくない場合があります。

2)あなたは正しいです。

3
Colin Phipps