2012-08-13 7 views
0

내 ActiveX 구성 요소는 WinInet.dll을 사용하고 SSL 인증 기관을 사용하여 서버와의 SSL 연결을 설정합니다.WinInet + SSL : 약식 SSL 핸드 셰이크를 만들 수 없습니다.

IE 프로세스에서 호스트되지 않은 경우 항상 서버와 완전한 SSL 핸드 셰이크를 수행합니다. 그리고 Client Hello에서 SessionID 헤더를 재사용하여 단축 SSL 핸드 셰이크를 만들 수있는 방법을 찾지 못했습니다.

그렇지 않으면 내 ActiveX가 IE 프로세스에서 호스팅되는 경우 SessionID 헤더를 다시 사용하면 자동으로 작동합니다.

IE에서 내 연결에 추가 설정이 적용되는 것처럼 보입니다. 아무도 이러한 추가 설정을 알고 있습니까? 아무도 내가이 문제와 어떻게 싸울 수있는 몇 가지 팁을 제안 할 수 있습니까?

P. Delphi 프로젝트이므로 WCF를 사용할 수없고 OpenSSL로 이동할 수 없습니다.


은 내가 여기에 몇 가지 설명을 제공해야한다고 생각 :

  1. 내 액티브 X는 확실히 (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은 클라이언트 Hello 용 SessionID를 사용하지 않습니다. WinInet은 완전한 SSL/TLS 핸드 셰이크를 수행합니다.

  5. 여기서 SSL/TLS 핸드 셰이크에 대한 두 가지 시나리오가 있습니다. 즉, IE가 아닌 프로세스에 대해서는 전체이고 IE 프로세스에 대해서는 약식입니다. 이 시나리오에 대한 자세한 내용은 MSDN 블로그 http://blogs.msdn.com/b/huizhu/archive/2009/12/17/ssl-_2f00_tls-full-handshake-vs.-abbreviated-handshake.aspx

희망이 있습니다.

+0

ActiveX .ocx 컨트롤이 기본 델파이 프로그램으로 작성 되었습니까? 어쩌면 특정 동작이 예상되는 경우 사용하고있는 API와 그 API에 사용중인 매개 변수를 지정하여 누락 된 부분을 발견 할 수 있는지 알아볼 수 있습니다. 내 최고의 추측은 위의 포인트 # 5 링크가 레지스트리를 통해 설정되는 것을 보여주는 것과 동일한 옵션을 설정하는 wininet API를 찾아야한다는 것입니다. –

답변

1

Internet Explorer는 자체 연결을 위해 WinInet을 사용합니다. ActiveX가 in-process 오브젝트라고 가정하면, IE 내부에서 호스팅 될 때 WinInet은 단순히 동일한 프로세스 내에서 정보를 공유합니다. ActiveX가 WinInet을 사용하지 않는 비 IE 프로세스에서 호스트 될 때이를 얻지 못합니다.

+0

답장을 보내 주셔서 감사합니다. 그러나 두 경우 모두 내 ActiveX는 WinInet을 사용합니다. 나는 내 질문을 더 명확하게 업데이트한다. –

관련 문제