0

ActiveXコンポーネントはWinInet.dllを使用し、SSL認証局を使用してサーバーとのSSL接続を確立します。

IEプロセスでホストされていない場合は、サーバーとの完全なSSLハンドシェイクを常に実行します。また、Client HelloでSessionIDヘッダーを再利用して、省略されたSSLハンドシェイクを作成する方法が見つかりません。

それ以外の場合、ActiveXがIEプロセスでホストされていると、SessionIDヘッダーの再利用が自動的に機能します。

IEが接続に追加の設定を適用しているようです。誰かがこれらの追加設定を知っていますか?誰かが私にこの問題と戦うためのヒントを教えてもらえますか?

PSこれはDelphiプロジェクトであるため、WCFを使用できず、OpenSSLにも移動できません。


ここでいくつか説明する必要があると思います。

  1. 私のActiveXは、確かに両方の場合(IEプロセスコンテキストと非IEプロセスコンテキスト)でWinInet.dllを使用します。

  2. WinInet.dllは、SSL/TLSハンドシェイクを自分で行います。WinInetレベルのSessionIDヘッダーにアクセスできませんが、IEにはアクセスできます。

  3. IEは、ActiveXがIEプロセスでホストされている場合に、以前のSessionIDを使用するようにWinInetを設定する方法を知っています。WinInetは、SSL/TLSハンドシェイクを省略します。

  4. 非IEプロセス内でWinInet.dllを使用する場合、WinInetはClientHelloにSessionIDを使用しませんでした。WinInetは完全なSSL/TLSハンドシェイクを実行します。

  5. したがって、ここではSSL /TLSハンドシェイクの2つのシナリオがあります。IE以外のプロセスの場合は完全で、IEプロセスの場合は省略されます。これらのシナリオの詳細については、MSDNブログhttp://blogs.msdn.com/b/huizhu/archive/2009/12/17/ssl-_2f00_tls-full-handshake-vs.-abbreviated-handshake.aspxを参照してください。

それが今より明確になることを願っています。

4

1 に答える 1

1

Internet Explorer は、独自の接続に WinInet を使用します。ActiveX がインプロセス オブジェクトであると仮定すると、それが IE 内でホストされている場合、WinInet は同じプロセス内でそれ自体と情報を共有しているだけです。WinInet 自体を使用していない IE 以外のプロセスで ActiveX がホストされている場合は、この問題は発生しません。

于 2012-08-13T20:46:51.087 に答える