私はIISのクライアント証明書認証に関する記事をかなり読んだことがありますが、ほとんどはクライアント証明書のRequired
モードについて話しています。この場合、認証はWebサーバー側で完全に行われ、証明書がないか無効である場合にユーザーはエラーページにリダイレクトされます。私が必要とするのは、クライアント証明書が存在する場合はそれをチェックし、結果をhttpヘッダーとしてバックエンドに渡すようにIISを構成することです。それは簡単にnginxまたはApache Webサーバーで行うことができます。クライアント認証はoptional
として設定できます。次に、Webサーバーは証明書をチェックし、チェックの結果をアプリケーションのバックエンドにSSL_CLIENT_CERT
(証明書のPEM表現)とSSL_CLIENT_VERIFY
(チェックの結果 - SUCCESS、NONE、...)ヘッダーとして渡します。だから、バックエンドの部分では、私はヘッダーを読み取って、実際の認証を行うために値を使用することができます - データベース内のユーザーを見つける、認証トークンを発行します。 IISで可能ですか?はいの場合、証明書とチェック状態をhttpヘッダーとしてバイパスする方法に関するドキュメントがありますか?IISをセットアップしてクライアント証明書を確認し、httpヘッダーとしてバックエンドに渡すにはどうすればよいですか?
答えて
しばらくすると、私は私の質問に答えを書いています。
リバースプロキシとして機能するには、IISにARR拡張機能を設定する必要があります。次に、デフォルトのWebサイトに対してクライアント証明書認証を有効にすることができます。ここではいくつかのリンクは、それを達成する方法を説明します:
- https://blogs.msdn.microsoft.com/benjaminperkins/2014/06/02/configure-application-request-routing-arr-with-client-certificates/
- https://blogs.msdn.microsoft.com/asiatech/2014/01/27/configuring-arr-with-client-certificate/
とリンク一般的に非常に強固なSSL/TLSハンドシェイクの説明や証明書のカップル:
- https://blogs.msdn.microsoft.com/kaushal/2013/08/02/ssl-handshake-and-https-bindings-on-iis/
- https://blogs.msdn.microsoft.com/kaushal/2013/01/09/self-signed-root-ca-and-intermediate-ca-certificates/
- https://blogs.msdn.microsoft.com/kaushal/2015/05/27/client-certificate-authentication-part-1/
基本的には、アプリケーション要求ルーティング(ARR)拡張はプロキシとして動作するIISのために有効にされるべきです。次に、プロキシバイパスルートを設定します。次に、IISサーバー用の有効なサーバー証明書を設定し、それを既定のWebサイトのhttpsバインディングで使用する必要があります。証明書は、ローカルコンピュータの信頼されたルート証明機関および中間証明機関に配置する必要があるCAによって発行される必要があります。次に、クライアント証明書の設定が[同意]の既定のWebサイトのSSL設定でSSLを要求する必要があります。この場合、Webサーバーに接続するクライアントには、サーバー証明書と同じCAによって発行された有効なクライアント証明書が要求されます。
実際、IISは、Webサーバーによって信頼されるルート発行者の識別名のリストをクライアントブラウザに送信します。ブラウザは、この名前とクライアントの信頼できる証明書の発行者との共通点を見つけ、交差点の発行者が発行した有効な証明書を探します。その後、ユーザはそれらのうちの1つを選択するか(または選択しない)、選択された証明書はCA証明書と照合される。証明書がチェックに合格した場合、要求はX-ARR-ClientCert
ヘッダーの証明書を使用してバックエンドアプリケーションに「リダイレクト」されます。ヘッダーの名前は、サーバー - >構成エディター - > system.webServer/proxy-> clientCertHeaderName IISパラメーターで変更できます。ユーザーが必要な証明書を選択しなかった場合、その要求はヘッダーなしでアプリバックエンドに「リダイレクト」されます。
チェックの状態は、SSL_CLIENT_VERIFY
ヘッダーにはまったく必要ないと思われます。証明書が有効な場合は、ヘッダーに渡されます。証明書がない場合、ヘッダーは空です。証明書がクライアントによって提供されたものの、無効である場合、要求は失敗し、バックエンドアプリケーションサーバーには「リダイレクト」されません。それはまれなケースですが、私には例があります。
サーバー証明書を識別名XXX
でCAによって発行され、想像、および識別名XXX
でCAによって発行された(クライアントコンピュータ上)クライアント証明書YYY
がありますが、これらのCAはありません同じ(どちらかまたは両方が自己署名されています)。この場合、ブラウザで表示される証明書選択ダイアログに証明書が表示されますが、証明書は実際のWebサーバーCAに対してさらに検証をパスしません。
これだけです。また、IISは、一部のアプリケーションエンドポイント(アドレス)に対してのみクライアント証明書を要求する(または受け入れる)方法がないようです。私は、ウェブサイト全体を有効にすること以外は、他の選択肢を見つけられませんでした。
- 1. GolangのCRLに対するクライアント証明書を確認するにはどうすればよいですか?
- 2. SSLクライアント証明書認証をサポートするにはどうすればよいですか?
- 3. ASIHTTPRequestで認証ヘッダーを渡すにはどうすればよいですか?私は、次の操作を実行しようとしています
- 4. クライアントがHTTP/2を使用して接続しているかどうかを確認するにはどうすればよいですか?
- 5. どのようにして証明書を持たないクライアント認証証明書が必要なウェブサイトに接続することができますか?
- 6. AutoRestクライアントを使用してクライアント証明書を渡す方法
- 7. 処理のHTTPリクエストクラスの証明書を認証するにはどうすればいいですか
- 8. IISの背後にあるHTTPサーバー:認証ヘッダーを渡します。
- 9. Silverlightでホストサーバーの証明書を確認するにはどうすればよいですか?
- 10. http認証とヘッダーをmodrestcurlclientリクエストに渡します
- 11. boost :: asio SSLを使用してクライアント証明書を確認する方法は?
- 12. 証明書なしでHTTP :: Daemon :: SSLを動作させるにはどうすればよいですか?
- 13. システムにインストールされているクライアント証明書を確認する方法
- 14. 欠落しているCAでクライアント証明書を使用して外部Webサービスと通信するにはどうすればよいですか?
- 15. ロールオーバー証明書を確認するにはどうすればよいですか?
- 16. PowerShellを使用してリモートマシンに証明書をインストールするにはどうすればよいですか?
- 17. Cloudflareを使用してサブサブドメインに証明書を追加するにはどうすればよいですか?
- 18. mobilinkクライアントとサーバーをセットアップして同期をテストするにはどうすればよいですか?
- 19. IISクライアント証明書認証が正常に行われたかどうかnodeJS Expressをチェックする
- 20. バックエンドでレンダリングされたフロントエンドルートにアクセスするユーザーが認証されていることを確認するにはどうすればよいですか?
- 21. jQueryを使用してWindows認証をWebサービスに渡すにはどうすればよいですか?
- 22. LDAPにStartTLSとLDAPSオプションを追加しているときにクライアント証明書を確認する
- 23. CryptoAPIを使用してユニコードCNで証明書をロードするにはどうすればよいですか?
- 24. HTTP(HTTPSを使用しない)を介したクライアント証明書の認証
- 25. IIS 7.5でのWCFクライアント認証証明書のインストールと取得
- 26. クライアントは証明書チェーンをキーストアにどのように設定しますか?
- 27. ノード+エクスプレスアプリでルートを設定して認証メソッドを渡すにはどうすればよいですか?
- 28. Net :: HTTPでPOSTリクエストのトークンを使用して認証するにはどうすればよいですか?
- 29. システム証明書ストレージに独自の証明書をインストールするにはどうすればよいですか?
- 30. クライアント証明書をstandardEndpointに追加していますか?