INFO: Using WinInet APIs in a System Service to access SSL sitesID: Q190542
|
On machines with Internet Explorer 3.x installed, it is possible for a
System Service (like an ISAPI filter) to access SSL servers using the
WinInet APIs, while the same code will break on machines with Internet
Explorer 4.x installed.
This is because the certificates for the SSL servers are no longer stored
in the same place when Internet Explorer 4.x is installed. Internet
Explorer 4.x stores the certificate information under the HKEY_CURRENT_USER
hive. A System Service by default has as its HKEY_CURRENT_USER the contents
of HKEY_USERS\.DEFAULT. Therefore, a System Service does not have access to
the necessary certificate information to establish a secure connection. A
typical error is 12045 - ERROR_INTERNET_INVALID_CA (which means the
certificate authority is not recognized).
At this time using WININET APIs within the context of a System Service is
not supported. However, an unsupported workaround is available. It should
be noted that Microsoft does not support this workaround and the user must
be aware that future releases of Windows NT and/or Internet Explorer may
break this workaround.
The workaround requires manually copying the content of the certificate
information to the System Service's HKEY_CURRENT_USER (or the equivalent
thereof).
WARNING: Using Registry Editor incorrectly can cause serious, system-wide
problems that may require you to reinstall Windows NT to correct them.
Microsoft cannot guarantee that any problems resulting from the use of
Registry Editor can be solved. Use this tool at your own risk.
To use WININET for SSL connections under the context of a System Service,
you must copy the contents of the following key:
HKEY_CURRENT_USER\
SOFTWARE\
Microsoft\
SystemCertificates\
To the following key:
HKEY_USERS\
.DEFAULT\
SOFTWARE\
Microsoft\
SystemCertificates\
NOTE: If the machine on which WININET is being used is sitting behind a
firewall or a proxy, the configuration information for these settings are
also stored in the HKEY_CURRENT_USER and may need to be copied. The setting
information is stored in:
HKEY_CURRENT_USER\
SOFTWARE\
Microsoft\
Windows\
CurrentVersion\
InternetSettings\
And needs to be copied over to:
HKEY_USER\
.DEFAULT\
SOFTWARE\
Microsoft\
Windows\
CurrentVersion\
InternetSettings\
Similarly, this workaround is not supported by Microsoft.
Q182888 HOWTO: Handle Invalid Certificate Authority Error with WinInetThis article describes how to use InternetSetOption to ignore the 12045 error and resubmit the request. As with the method of copying registry entries, this is unsupported in a service; that is, it may not prevent the 12045 error or may cause a different error to be returned that cannot be recovered from.
For more information, please see the MSDN Web Workshop:
http://msdn.microsoft.com/workshop/default.asp
Q168151 HOWTO: How to Make SSL Requests Using WinInet
Additional query words:
Keywords : kbnokeyword
Version : WINDOWS:4.0,4.01; WINNT:
Platform : WINDOWS winnt
Issue type : kbinfo
Last Reviewed: August 9, 1999