双方向SSLがどのように機能するかについて少し混乱しています。クライアントはサーバーに送信する証明書をどのように作成しますか?サーバーから生成され、クライアントに配布されますか?
また、一方向SSLに対する双方向SSLの利点は何ですか?
接続する前に、両方の証明書が存在している必要があります。これらは通常、認証局によって作成されます(必ずしも同じである必要はありません)。(検証を別の方法で行うことができる別のケースもありますが、いくつかの検証を行う必要があります。)
サーバー証明書は、クライアントが信頼するCAによって作成される必要があります(RFC 6125で定義されている命名規則に従います)。
クライアント証明書は、サーバーが信頼するCAによって作成される必要があります。
信頼できるものを選択するのは各当事者の責任です。
ブラウザ内で証明書を申請し、CAが証明書を発行したら、そこにインストールできるオンラインCAツールがあります。クライアント証明書認証を要求するサーバー上にある必要はありません。
証明書の配布と信頼の管理は、CAを介して実装される公開鍵インフラストラクチャ(PKI)の役割です。SSL / TLSクライアントとサーバー、そして単にそのPKIのユーザー。
クライアントがクライアント証明書認証を要求するサーバーに接続すると、サーバーはクライアント証明書要求の一部として受け入れてもよいCAのリストを送信します。クライアントは、必要に応じてクライアント証明書を送信でき、適切な証明書が利用可能になります。
クライアント証明書認証の主な利点は次のとおりです。
クライアント認証のためのクライアント証明書の利点に興味があるかもしれませんか?(Security.SE上)。
「双方向SSL」と呼ばれるものは、通常、クライアント証明書認証を使用したTLS/SSLと呼ばれます。
example.comへの「通常の」TLS接続では、クライアントのみが、example.comなどのサーバーと実際に通信していることを確認します。サーバーはクライアントが誰であるかを知りません。サーバーがクライアントを認証したい場合、通常はパスワードを使用するため、クライアントはユーザー名とパスワードをサーバーに送信する必要がありますが、これは内部プロトコル(HTTPなど)の一部としてTLS接続内で発生します。 TLSプロトコル自体の一部。欠点は、パスワードをサーバーに送信するため、サイトごとに個別のパスワードが必要になることです。したがって、たとえばPayPalとMyPonyForumで同じパスワードを使用する場合、MyPonyForumにログインするたびに、このパスワードをMyPonyForumのサーバーに送信して、このサーバーのオペレーターがそれを傍受してPayPalで試し、自分の名前で支払いを発行できるようにします。 。
クライアント証明書認証は、TLS接続でクライアントを認証する別の方法を提供します。パスワードログインとは対照的に、クライアント証明書認証はTLSプロトコルの一部として指定されます。これは、クライアントがサーバーを認証する方法と同様に機能します。クライアントは公開秘密鍵ペアを生成し、署名のために公開鍵を信頼できるCAに送信します。CAは、クライアントの認証に使用できるクライアント証明書を返します。これで、クライアントは同じ証明書を使用して異なるサーバーへの認証を行うことができます(つまり、PayPalとMyPonyForumに同じ証明書を使用しても、悪用されるリスクを冒すことはありません)。それが機能する方法は、サーバーが証明書を送信した後、クライアントにも証明書を提供するように要求することです。次に、いくつかの公開鍵魔法が発生します(詳細を知りたい場合はRFC 5246)、これでクライアントは適切なサーバーと通信することを認識し、サーバーは適切なクライアントと通信することを認識し、両方に接続を暗号化および検証するための共通のキーマテリアルがあります。
双方向のSSLで、クライアントはサーバーにデジタル証明書を要求し、サーバーはクライアントに同じものを要求します。少し遅いですが、双方向であるため、より安全です。サーバーはクライアントのIDを気にしないため、通常はこれに従いませんが、クライアントは接続先のサーバーの整合性を確認する必要があります。