web-dev-qa-db-ja.com

サーバーがサポートしていない場合のTLSクライアント証明書チェックのOpenSSL(または同様のもの)へのオフロード

TL; DR

通常のTLS暗号化に加えて、安全なユーザー認証のために、それを実行できないサーバーに代わってクライアント証明書を処理するための「何か」が必要です。

環境

この質問では パブリックIPのTLSに対してセキュリティをダブルチェックするにはどうすればよいですか? 通常のTLSは通常クライアント認証を行わないことが明確になっていますが、サーバーが要求した場合は可能であるようです。

「プレーンテキスト」または「TLSチャネル上」を介して通信できるサーバーがあるとしましょう(TLSの有無にかかわらずサーバーを再起動できます)。ただし、TLSが有効になっている場合、サーバーはクライアントのチェックをサポートしません。 -authの証明書。

元の質問はdockerレジストリに関するものでしたが、私はTLSをサポートしているがクライアント側の証明書はサポートしていないすべてのサーバーに質問を一般化します。

私が考えていること

「TLS部分」をセキュリティ固有のソフトウェアにオフロードし(SSHポート転送トンネルと同様)、サーバーとTLS処理を切り離すことを考えています。

おそらく、2つのプロセスが関係します。

  • サーバーは、ファイアウォールで保護されたlocalhostポートまたはLinuxソケットを「プレーンテキスト」でリッスンしますが、ファイアウォールで保護されているため、外部から到達することはできません。
  • ある種の「セキュリティミドルウェア」(おそらくOpenSSLですが、よくわかりません)-これはTLSターミネータと呼ばれていると思いますが、これも実際にはわかりません:
    • パブリックIPリスニングを処理する
    • サーバー側の証明書を処理して、TLS経由でチャネルを保護する
    • クライアント側の証明書を処理して、信頼性をチェックします(おそらく、以前にサーバーにアップロードした一連の公開鍵に対して)
    • クライアントがユーザーのホワイトリストに属している場合に限り、復号化されたチャネルを通常のプレーンテキストサーバーに転送します。

ご質問

  1. このTLSは通常の設定をオフロードしますか?

  2. もしそうなら、OpenSSLはこのオフロードの優れたハンドラですか?

  3. はいの場合、どのようなドキュメントがこの種のセットアップの良い出発点になる可能性がありますか?

Thnx。

2
Xavi Montero
  1. このTLSは通常の設定をオフロードしますか?

サーバーが必要なものをサポートしていない場合、TLSを何か他のものにオフロードするのは、通常の設定です。

  1. もしそうなら、OpenSSLはこのオフロードの優れたハンドラですか?

私はopensslでこれに対するソリューションを直接構築することを期待していません。ロードバランサーはこのようなことを常に行います。 stunnelでそれを行うこともできます。 これは設定例です 、これらの主要な構成行に煮詰めます:

verify = 2 # This enables the mutual authentication
CAfile = /etc/ssl/certs/root-genfic.crt

クライアント証明書がroot-genfic.crtによって署名されている場所。

  1. はいの場合、どのようなドキュメントがこの種のセットアップの良い出発点になる可能性がありますか?

stunnelのドキュメントと関連リソースは stunnel Webサイト で入手できます。

6
gowenfawr