私はDelphi XE3でIndyとOpenSSLを使って、同じポート上でHTTPとHTTPSの両方の接続でトラフィックを処理できるWebサーバーを設定しようとしています。Delphi XE3でTIdTCPServerとOpenSSLを使用して、同じポート上でSSLトラフィックと非SSLトラフィックをサポートするにはどうすればよいですか?
私はこれに2つの主なアプローチを見てきましたが、どちらも私にとってはうまくいかないようです。
最初に:Up-front TLS/SSL。これは、ストリームの最初の数バイトを読み込んで、非セキュアハンドシェイクの "Client-Hello"部分を探し、サーバーSSLハンドシェイク応答を呼び出す(見つかった)場合、OpenSSLライブラリは認識しません私はメッセージの先頭のバイトを取り除いたので、ハンドシェイクします。
2番目:STARTTLS(または同等のもの)の後のTLS。これには特別な文字セット(STARTTLS)が送信され、すぐに「Client-Hello」が続きます。サーバーはSSLハンドシェイクメッセージ全体をそのままOpenSSLライブラリに渡します。このアプローチの問題は、ほとんどのWebブラウザではサポートされていないことです(RFC 2817)。 2つのアプローチの概要について
、ここを見て: What happens on the wire when a TLS/LDAP or TLS/HTTP connection is set up?)どのように私は、Delphi XE3にTIdHTTPServerとOpenSSLを使用して、同じポートでSSLと非SSLトラフィックをサポートすることができますか?
代替提案ありがとうございます!私はそれらを調べて、どちらかを実装すると、私はここに再び投稿します。 – Andy