Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi WinInet+;SSL:Can';不要进行简短的SSL握手_Delphi_Ssl_Ssl Certificate_Sessionid_Wininet - Fatal编程技术网

Delphi WinInet+;SSL:Can';不要进行简短的SSL握手

Delphi WinInet+;SSL:Can';不要进行简短的SSL握手,delphi,ssl,ssl-certificate,sessionid,wininet,Delphi,Ssl,Ssl Certificate,Sessionid,Wininet,我的ActiveX组件使用WinInet.dll并使用SSL证书颁发机构与服务器建立SSL连接 如果服务器不在IE进程中,它总是与服务器进行完全SSL握手。我找不到任何方法来重用客户端Hello中的SessionID头来进行简短的SSL握手 否则,如果我的ActiveX托管在IE进程中,则会自动重用SessionID头 看起来IE对我的连接应用了其他设置。有人知道这些附加设置吗? 有谁能给我一些建议,我怎样才能解决这个问题 另外,这是Delphi项目,所以我不能使用WCF,也不能使用OpenSS

我的ActiveX组件使用WinInet.dll并使用SSL证书颁发机构与服务器建立SSL连接

如果服务器不在IE进程中,它总是与服务器进行完全SSL握手。我找不到任何方法来重用客户端Hello中的SessionID头来进行简短的SSL握手

否则,如果我的ActiveX托管在IE进程中,则会自动重用SessionID头

看起来IE对我的连接应用了其他设置。有人知道这些附加设置吗? 有谁能给我一些建议,我怎样才能解决这个问题

另外,这是Delphi项目,所以我不能使用WCF,也不能使用OpenSSL


我想我应该在这里澄清一下:

  • 我的ActiveX在这两种情况下(在IE进程上下文和非IE进程上下文中)都使用WinInet.dll

  • WinInet.dll自己进行SSL/TLS握手。我无法访问WinInet级别的SessionID头,但IE可以访问

  • IE知道如何设置WinInet以使用以前的SessionID,如果我的ActiveX托管在IDE IE进程中。WinInet进行简化的SSL/TLS握手

  • 如果我在非IE进程中使用WinInet.dll,那么WinInet不会对客户端Hello使用SessionID。WinInet执行完整的SSL/TLS握手

  • 所以我们这里有两种SSL/TLS握手的场景:完全表示非IE进程,缩写表示IE进程。有关这些场景的更多信息,请参见MSDN博客


  • 希望现在更清楚。

    Internet Explorer使用WinInet进行自己的连接。假设ActiveX是进程内对象,当它托管在IE中时,WinInet只是在同一进程内与其自身共享信息。当ActiveX托管在不使用WinInet的非IE进程中时,您不会明白这一点。

    谢谢您的回复,但我的ActiveX在这两种情况下都使用WinInet。我更新了我的问题以便更清楚。那么您有一个ActiveX.ocx控件作为本机delphi程序编写?如果您希望看到某个特定的行为,那么您应该指定您正在使用的API以及这些API使用的参数,以查看是否有人能够发现您遗漏的内容。我的最佳猜测是,您需要找到一个wininet api,该api设置的选项与上面的point#5链接显示的通过注册表设置的选项相同。