web-dev-qa-db-ja.com

クライアント証明書が使用するルートCAを識別する方法は?

サーバーに複数のルートCAがある場合、どのルートCAクライアントが使用されているかをどのように特定できますか?

クライアント証明書とルート証明書の公開鍵を比較できますが、ルート証明書が多数ある場合、これは不要なオーバーヘッドです。

使用されているルートCA(エイリアス)をクライアント証明書(x.509)から確認する方法はありますか?

この説明を追加するために編集:

証明書チェーンの中間証明書が利用できない/アクセスできない場合、同じCAが複数のルート証明書(たとえば、異なるテナント)をすべて発行した場合、受信クライアント証明書をサーバー上の対応するルート証明書と照合する他の方法はありますか?

2
Nerdyme

はい。 x509証明書の[発行者]フィールドは、証明書パスで上にある次の証明書のサブジェクトを指定するために使用されます。証明書チェーンの再帰を続けると、最終的にルート証明書のサブジェクト名に到達します。

4
mti2935

実際にはそれほど複雑ではありません。OSの証明書ブラウザがすべてのキーチェックを実行します。例として、Windows証明書ビューアで表示される*.stackexchange.comの証明書を次に示します。 (Chromeのロックアイコンをクリックして、[証明書情報]をクリックしました)

Windows Certificate Viewer - General

Issued by:フィールドに、発行元CAの表示名がリストされていることに注意してください。この名前は必ずしも一意であるとは限らないため、詳細については、Detailsタブに移動し、Issuerフィールドを見つけます。

Windows Certificate Viewer - Details

これは、発行元CAの完全な識別名(DN)をリストします。これは、組織内で一意になりますが、なりすましの可能性があると思います。実際の証明書を確認するには

Windows Certificate Viewer - Certificate Path

ここでは、チェーン内の各証明書を開いて検査できます。

4
Mike Ounsworth