web-dev-qa-db-ja.com

クライアント認証とサーバー認証の両方に1つの証明書

TLS Webサーバー認証とTLS Webクライアント認証の両方でエンドエンティティ証明書を発行しない理由はありますか?

Webサーバーで認証されるクライアント証明書にTLS Webサーバー認証も含まれている場合はどうなりますか?

代わりに2つの異なる証明書を発行する必要がありますか? 1つはTLS Webクライアント認証のみを使用し、もう1つはTLS Webサーバー認証のみを使用しますか?

ベストプラクティスとあなたの経験は何ですか?

2
user1563721

規範的な観点から見ると、RFC5280は、両方の拡張キーの使用法を同じ証明書に設定することに制約を課していません。

セキュリティの観点から、SSL認証にクライアント(他のサービスに接続するため)とサーバー(接続を受信するため)と同じ証明書を使用することで、暗号/プロトコルの問題(私が知る限り/見つけることができる限り)もありません。 )。 2つの証明書を使用する場合、両方とも同じサーバーに格納されるため、攻撃者が1つの証明書を盗むことができる場合、攻撃者は2つを盗むことができ、そこに利益や損失はありません。

ただし、特に何らかの理由でいずれかの使用法の機能に影響を与える可能性のある方法で証明書の特性を変更する必要がある場合(特に、DNを変更して関連するものを含める)サーバー認証を壊す可能性のあるクライアント認証に)。

私は常に、そのような状況では、両方を別々に保ちます。プライベートPKIについて話している場合は、通常、それぞれを発行するために異なるCAも使用します。

6
CristianTM

まず、相手側が提供している証明書がクライアントまたはサーバーであるかどうかを確認する方法です。

Not Critical
TLS Web Server Authentication (1.3.6.1.5.5.7.3.1)
TLS Web Client Authentication (1.3.6.1.5.5.7.3.2)

ご覧のように、これは重要ではない拡張であるため、証明書の使いやすさはこの拡張にほとんど依存しません。

制限を課すその証明書のキー使用拡張

Critical
Signing
Key Encipherment

「署名」フィールドのない証明書は認証に使用できないため、サーバー証明書として使用することはできません

同様に、キー暗号化なしの証明書は、他のパラメータもあるように、キー交換の目的で使用できません

1
8zero2.ops