ActiveXコンポーネントはWinInet.dllを使用し、SSL認証局を使用してサーバーとのSSL接続を確立します。
IEプロセスでホストされていない場合は、サーバーとの完全なSSLハンドシェイクを常に実行します。また、Client HelloでSessionIDヘッダーを再利用して、省略されたSSLハンドシェイクを作成する方法が見つかりません。
それ以外の場合、ActiveXがIEプロセスでホストされていると、SessionIDヘッダーの再利用が自動的に機能します。
IEが接続に追加の設定を適用しているようです。誰かがこれらの追加設定を知っていますか?誰かが私にこの問題と戦うためのヒントを教えてもらえますか?
PSこれはDelphiプロジェクトであるため、WCFを使用できず、OpenSSLにも移動できません。
ここでいくつか説明する必要があると思います。
私のActiveXは、確かに両方の場合(IEプロセスコンテキストと非IEプロセスコンテキスト)でWinInet.dllを使用します。
WinInet.dllは、SSL/TLSハンドシェイクを自分で行います。WinInetレベルのSessionIDヘッダーにアクセスできませんが、IEにはアクセスできます。
IEは、ActiveXがIEプロセスでホストされている場合に、以前のSessionIDを使用するようにWinInetを設定する方法を知っています。WinInetは、SSL/TLSハンドシェイクを省略します。
非IEプロセス内でWinInet.dllを使用する場合、WinInetはClientHelloにSessionIDを使用しませんでした。WinInetは完全なSSL/TLSハンドシェイクを実行します。
したがって、ここでは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を参照してください。
それが今より明確になることを願っています。