SSL ターミネーティング ロード バランサーの問題 (クライアント証明書をアプリケーション サーバーに転送しない) を回避するために、ISP は、クライアント証明書が HTTP ヘッダー内で実サーバーに転送されるように環境を構成しました (X-クライアント証明書)。
発行された証明書のシリアル番号にマップされた PIN を使用して、クライアントを認証します。しかし、カスタム ヘッダーから証明書を取得するにはどうすればよいでしょうか。
SSL ターミネーティング ロード バランサーの問題 (クライアント証明書をアプリケーション サーバーに転送しない) を回避するために、ISP は、クライアント証明書が HTTP ヘッダー内で実サーバーに転送されるように環境を構成しました (X-クライアント証明書)。
発行された証明書のシリアル番号にマップされた PIN を使用して、クライアントを認証します。しかし、カスタム ヘッダーから証明書を取得するにはどうすればよいでしょうか。
を使用して証明書データを取得できることを知っていると思います
String s = Request.Headers["X-Client-Cert"];
問題は、証明書がヘッダーに追加される形式です。Base64でエンコードされていると思います。
byte[] certdata = Convert.FromBase64String(s);
次に、そこから証明書オブジェクトを作成できます。
X509Certificate cert = new X509Certificate(certdata);
ロード バランサーがクライアント証明書の有効性をチェックするかどうか (および正しいルート CA によって署名されているかどうか) に応じて、証明書の有効性を自分でチェックする必要があるかどうかに応じて異なります。
その後、次の方法でシリアル番号を読み取ることができますcert.GetSerialNumber();