現在、すべての証明書は別の自己署名 CA 証明書を使用して生成されています。プロジェクトの POC を行っています。
クライアントの要求を通じて受け取ったクライアント証明書に関する情報を取得する方法を見つけ出すことは、私にとって不可欠です。どうすればいいですか?
編集:より具体的には、2 つの異なる受信 Web 要求からの 2 つのクライアント証明書が類似しているかどうかを確認したい
現在、すべての証明書は別の自己署名 CA 証明書を使用して生成されています。プロジェクトの POC を行っています。
クライアントの要求を通じて受け取ったクライアント証明書に関する情報を取得する方法を見つけ出すことは、私にとって不可欠です。どうすればいいですか?
編集:より具体的には、2 つの異なる受信 Web 要求からの 2 つのクライアント証明書が類似しているかどうかを確認したい
リクエストを介して送信されているクライアント証明書を監視するにはどうすればよいですか?
クライアント証明書は、SSL/TLS 接続を確立するために使用されます。HTTPS リクエストは上位レベルで発生し、下位レベルの SSL/TLS チャネルとは関係ありません。
そうは言っても、おそらく、クライアント証明書からのユーザーの ID を HTTP 要求にバインドするトークンまたは Cookie が利用可能です。
クライアントの要求を通じて受け取ったクライアント証明書に関する情報を取得する方法を見つけ出すことは、私にとって不可欠です。どうすればいいですか?
あなたは自分が何を持っているか、どんな情報が欲しいかを言いませんでした。おそらく、より具体的にする必要があります。
2 つの異なる着信 Web 要求からの 2 つのクライアント証明書が類似しているかどうかを確認したい
このコンテキストで「類似」を定義する必要があります。それは難しいかもしれません。
単純に、 or を使用して、2 つが「等しい」かどう{Subject's Distinguished Name}
かを確認できます。しかし、「類似」(おそらく同じ発行者?){Subject's Distinguished Name, Public Key}
を区別する方法がわかりません。
ただの使用に注意してください{Subject's Distinguished Name}
。これは最新の Android APK 署名バグです: Android Fake ID Vulnerability Lets Malware Impersonate Trusted Applications .
X509 証明書は、公開鍵をエンティティにバインドします。したがって、証明書は、(1) サブジェクト、(2) 公開鍵、および (3) 発行者 ((1) と (2) に署名を適用する) に基づいて「一意」です。
エンティティはSubjectに表示されます。たとえば、サーバーまたはユーザーです。サーバーは、とりわけその DNS 名によって識別されます。ユーザーは、特に電子メールアドレスによって識別されます。Subject's Distinguished Nameからサブジェクト名を取得できます。
証明書からサブジェクトの公開鍵を取得できます。サブジェクトが常に利用可能であるように、公開鍵は常に利用可能です。信頼できる機関は 2 つをバインドし、どちらかが欠けている場合は要求に署名しません。
発行者はサブジェクトの証明書に署名しました。これは信頼できる機関であり、多くの場合パブリック CA です。発行者の識別名から発行者の名前を取得できます。
必要に応じて、 Authority Key Identifier (AKI)から発行者の公開鍵のダイジェストを取得できます。実際の公開鍵を取得するには、発行者の証明書を検査する必要があります。
サブジェクトの証明書の署名を検証するときは、発行者の証明書が必要です。サブジェクトの証明書の証明書を検証するために発行者からの公開鍵が必要なため、これが必要です。
識別名(およびそれらを構成する相対識別名(RDN))については、 RFC 4514のLightweight Directory Access Protocol (LDAP): String Representation of Distinguished Names を参照してください。