web-dev-qa-db-ja.com

EAP-TLSクライアントにCA証明書が必要なのはなぜですか?

WPA2 EAP-TLSでクライアントを設定する場合、ほとんどのクライアント(つまり、私の電話、私のコンピューター)は、クライアントの公開/秘密キーペア(明白な理由により)と認証局の証明書の両方を必要とします。

この2つ目のパラメーターは、用途がわからないものです。私の現在のセットアップは次のようになります:

.
└── root-ca
    ├── wifi-client-ca
    │   └── client1-client-cert
    └── wifi-server-cert

下に分岐する単一の自己署名ルートCA(root-ca)があります。私のRADIUSサーバーはwifi-server-certをSSL証明書として使用し、wifi-client-ca認証局を使用してクライアント証明書を検証します。

クライアントとサーバー側の証明書コンポーネントの両方で、どこにでも展開する際にチェーン証明書を使用しています。

Ubuntuマシンでclient1-client-certwifi-client-caを使用して接続することに問題はありませんでしたが、これらの同じ証明書を使用してAndroid)に接続できませんでした。問題は、Androidが証明書チェーンを適切に登っていないという事実にあると考えています。

これは2つの類似した質問に分類されます。

  1. EAP-TLSクライアントにCA証明書が必要なのはなぜですか?
  2. クライアントで使用するCA証明書、root-ca証明書(wifi-server-certに直接署名するもの)、またはwifi-client-ca
8
Naftuli Kay

EAP-TLSは実際にはSSL/TLSハンドシェイクをカプセル化し、サーバーとクライアントの両方が互いに証明書を送信します。これには次のプロパティがあります。

  • サーバーがcertificateを送信すると、実際にはcertificate chainが送信されます。これには、それを発行したCAとその上のCAなどが含まれます。ルート自体が送信される場合がありますが、これはオプションです)。
  • 同様に、クライアントが証明書を送信すると、それも証明書チェーンの一部になります。
  • クライアントはサーバーのチェーンを検証し、サーバーはクライアントのチェーンを検証します。

したがって、クライアント側では、次のように表記します。

  • 「クライアントチェーン」の一部としてサーバーに送信する必要があるため、クライアントはwifi-client-caを知っている必要があります。
  • サーバーの証明書を検証できるようにするには、クライアントはand信頼root-caを知っている必要があります(これはセキュリティにとって重要です。これにより、クライアントが偽のアクセスポイントと通信するのを防ぎます)。

一部のクライアントはwifi-server-certを直接信頼することを確信しているかもしれませんが、すべてのクライアントがそのような直接の信頼を許可しているわけではなく、その証明書の有効期限が切れると問題が発生します。

クライアントの証明書はサーバー用であり、クライアント自体ではありません。したがって、クライアントは自身の証明書を信頼する必要はありません。一般的な方法では、サーバー証明書のルートCAとクライアント証明書のルートCAは区別され、互いに無関係である場合があります。それでも、クライアントは、SSL/TLSが要求するように、サーバーに送信するために、独自の証明書のチェーンを知っているである必要があります(ただし、必ずしもtrustである必要はありません)。

11
Thomas Pornin