<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Care, Share and Grow! : SSL</title><link>http://blogs.msdn.com/saurabh_singh/archive/tags/SSL/default.aspx</link><description>Tags: SSL</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Configuring FTP 7.5 with Host Header and SSL</title><link>http://blogs.msdn.com/saurabh_singh/archive/2009/11/06/configuring-ftp-7-5-with-host-header-and-ssl.aspx</link><pubDate>Fri, 06 Nov 2009 20:59:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9918806</guid><dc:creator>Saurabh Singh</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/saurabh_singh/comments/9918806.aspx</comments><wfw:commentRss>http://blogs.msdn.com/saurabh_singh/commentrss.aspx?PostID=9918806</wfw:commentRss><wfw:comment>http://blogs.msdn.com/saurabh_singh/rsscomments.aspx?PostID=9918806</wfw:comment><description>&lt;p&gt;FTP 7.5 comes with new features like Host header and SSL. I recently saw some cases coming in from our customers on this. Scanning the Internet made me realize that we need more information posted on this as far as the configuration is concerned.&lt;/p&gt;  &lt;p&gt;If you are seeing any of these errors while connecting to an IIS FTP server using SSL/Host header like&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000" size="1"&gt;534-Local policy on server does not allow TLS secure connections.      &lt;br /&gt;Win32 error:&amp;#160;&amp;#160; Access is denied.       &lt;br /&gt;Error details: SSL certificate was not configured.&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;or&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000" size="1"&gt;Primary connection and data connection certificates don't match.      &lt;br /&gt;Error:&amp;#160; Transfer connection interrupted: ECONNABORTED - Connection aborted&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;or &lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000" size="1"&gt;431-Failed to setup secure session.      &lt;br /&gt;Win32 error:&amp;#160;&amp;#160; &lt;br /&gt;Error details: SSL certificate hash has invalid length.&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;or&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000" size="1"&gt;534-Protection level negotiation failed.      &lt;br /&gt;Win32 error:&amp;#160;&amp;#160; Access is denied.       &lt;br /&gt;Error details: Protection negotiation failed. PROT command with recognized parameter must precede this command.&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;then check this blog post &lt;a href="http://blogs.msdn.com/webtopics/archive/2009/11/06/configuring-ftp-7-5-with-host-header-and-ssl.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I wrote this article on our Team blog site hoping it reduces the confusion around this topic. &lt;/p&gt;  &lt;p&gt;&lt;font size="1"&gt;Ciao!&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9918806" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/Host+headers/default.aspx">Host headers</category><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/SSL/default.aspx">SSL</category><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/FTP/default.aspx">FTP</category></item><item><title>Using System.Net trace configuration file to troubleshoot Certificate errors in ASP.Net</title><link>http://blogs.msdn.com/saurabh_singh/archive/2009/09/16/using-system-net-trace-configuration-file-to-troubleshoot-certificate-errors-in-asp-net.aspx</link><pubDate>Wed, 16 Sep 2009 20:46:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9895969</guid><dc:creator>Saurabh Singh</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/saurabh_singh/comments/9895969.aspx</comments><wfw:commentRss>http://blogs.msdn.com/saurabh_singh/commentrss.aspx?PostID=9895969</wfw:commentRss><wfw:comment>http://blogs.msdn.com/saurabh_singh/rsscomments.aspx?PostID=9895969</wfw:comment><description>&lt;p&gt;System.Net trace configuration feature in ASP.Net 2.0 onwards is extremely useful when dealing with certificate related errors.&lt;/p&gt;  &lt;p&gt;Jeff P. Sanders from WinInet/System.Net API Escalation team has written this valuable post for troubleshooting ASP.Net certificate related issues.&lt;/p&gt;  &lt;p&gt;I am adding it&amp;#160; here as a quick reference for others and myself.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/jpsanders/archive/2009/09/16/troubleshooting-asp-net-the-remote-certificate-is-invalid-according-to-the-validation-procedure.aspx" href="http://blogs.msdn.com/jpsanders/archive/2009/09/16/troubleshooting-asp-net-the-remote-certificate-is-invalid-according-to-the-validation-procedure.aspx"&gt;http://blogs.msdn.com/jpsanders/archive/2009/09/16/troubleshooting-asp-net-the-remote-certificate-is-invalid-according-to-the-validation-procedure.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Great article!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9895969" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/SSL/default.aspx">SSL</category><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/Certificate/default.aspx">Certificate</category><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/.Net/default.aspx">.Net</category><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/reference/default.aspx">reference</category></item><item><title>SSL Troubleshooting for IIS Web Sites contd...</title><link>http://blogs.msdn.com/saurabh_singh/archive/2008/05/27/ssl-troubleshooting-for-iis-web-sites-contd.aspx</link><pubDate>Tue, 27 May 2008 03:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8553654</guid><dc:creator>Saurabh Singh</dc:creator><slash:comments>14</slash:comments><comments>http://blogs.msdn.com/saurabh_singh/comments/8553654.aspx</comments><wfw:commentRss>http://blogs.msdn.com/saurabh_singh/commentrss.aspx?PostID=8553654</wfw:commentRss><wfw:comment>http://blogs.msdn.com/saurabh_singh/rsscomments.aspx?PostID=8553654</wfw:comment><description>&lt;p&gt;Recently a colleague of mine was working on a customer's case which was a 
Critical level incident. High pressure job, huhh! &lt;/p&gt;
&lt;p&gt;The issue was with SSL not working for one of their web sites. They were 
seeing "Page cannot be displayed" when trying to access this site over SSL. It 
worked just fine over HTTP.&lt;/p&gt;
&lt;p&gt;In the System event log we were seeing this intermittently:&lt;/p&gt;
&lt;p&gt;&lt;font color="#ff0000"&gt;Event Type: Error&lt;br&gt;Event Source: W3SVC&lt;br&gt;Event 
Category: None&lt;br&gt;Event ID: 1114&lt;br&gt;Description:&lt;br&gt;One of the IP/Port 
combinations for site 'NNNNN' has already been configured to be used &lt;br&gt;by 
another program. The other program's SSL configuration will be used.&lt;/font&gt; 
&lt;/p&gt;&lt;p&gt;We troubleshot on this issue for hours without luck :-(. We tried all the 
steps I guess as mentioned &lt;a href="http://blogs.msdn.com/saurabh_singh/archive/2007/09/05/troubleshooting-ssl-related-issues-with-iis.aspx" mce_href="http://blogs.msdn.com/saurabh_singh/archive/2007/09/05/troubleshooting-ssl-related-issues-with-iis.aspx" target="_blank"&gt;here&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;Here is what all we tried:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Checked the Certificate properties to ensure it was a valid one. It was 
good.&lt;/li&gt;&lt;li&gt;Yet, replaced the current certificate with a new one, still no luck.&lt;/li&gt;&lt;li&gt;Here customer had all the sites running under different IP addresses. Rest 
of the other sites were working over SSL, except this one :-(.&lt;/li&gt;&lt;li&gt;We ran SSLDiag which gave a misleading error.&lt;/li&gt;&lt;li&gt;We tried running the site on a different SSL port, still no luck.&lt;/li&gt;&lt;li&gt;We setup the securebindings metabase property for the web site in question, 
still no luck.&lt;/li&gt;&lt;li&gt;We ran netstat -ano to check for any other process listening on this port, 
everything looked clean. refer &lt;a href="http://support.microsoft.com/?id=890015" mce_href="http://support.microsoft.com/?id=890015" target="_blank"&gt;this&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;We disabled all the 3rd party non-MS services, restarted Windows Server in 
selective startup mode, no luck.&lt;/li&gt;&lt;li&gt;We installed &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=6EC50B78-8BE1-4E81-B3BE-4E7AC4F0912D&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=6EC50B78-8BE1-4E81-B3BE-4E7AC4F0912D&amp;amp;displaylang=en" target="_blank"&gt;Windows Server 2003 Service Pack 1 32-bit Support Tools on the 
server&lt;/a&gt;, ran the httpcfg query iplisten. It gave a clean output, no specific 
IP entries listed by it.&lt;/li&gt;&lt;li&gt;Restarted IIS/HTTP services umpteen number of times during the course of 
troubleshooting, no luck whatsoever. Even reboot was done a couple of 
times.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Finally after few hours of troubleshooting we decided to run this site on a 
different IP address (we had thought of this earlier but our customer was under 
a constraint) and hurray it worked this time!!!. Now everything was set but we 
had a lingering question in mind as to why, why, why this site did not work on 
that IP address we had. It had an entry in the Advanced TCP/IP Settings, was a 
valid one in all the sense to our best knowledge.&lt;/p&gt;
&lt;p&gt;Finally we figured out that there was a problem with the IIS SSL 
listener.&lt;/p&gt;
&lt;p&gt;To get a list of IP and port configuration binded to a certificate, run 
"httpcfg query ssl". Here is an excerpt from a technet article:&lt;/p&gt;&lt;p&gt;&lt;i&gt;The HTTP API enables applications to communicate over HTTP without
using Microsoft Internet Information Services (IIS). Applications can
register to receive HTTP requests for particular URLs, receive HTTP
requests, and send HTTP responses. The HTTP API includes SSL support so
applications can also exchange data over secure HTTP connections
without depending on IIS. It is also designed to work with I/O
completion ports.&lt;/i&gt;....&lt;i&gt;Such meta-information is maintained by the HTTP API in a metastore, and
is used to locate certificates for certificate exchange in HTTPS
sessions.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Below is a sample of a working and non-working 
scenario:&lt;br&gt;------------------------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;\Program Files\Support Tools&amp;gt; httpcfg.exe query ssl&lt;/p&gt;
&lt;p&gt;&lt;u&gt;Working scenario&lt;/u&gt;:&lt;/p&gt;
&lt;p&gt;IP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 192.168.100.118:443&lt;br&gt;Hash&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 
c96667684997887f 5b889b7b3f737c8c4da5f16&lt;br&gt;Guid&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 
{4dc3e181-e14b-4a21-b022-59fc669b0914}&lt;br&gt;CertStoreName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 
MY&lt;br&gt;CertCheckMode&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0&lt;br&gt;RevocationFreshnessTime : 
0&lt;br&gt;UrlRetrievalTimeout&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0&lt;br&gt;SslCtlIdentifier&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
:&lt;br&gt;SslCtlStoreName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&lt;br&gt;Flags&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0 
&lt;/p&gt;&lt;p&gt;&lt;u&gt;Non-working scenario&lt;/u&gt;:&lt;/p&gt;
&lt;p&gt;IP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 192.168.100.234:443&lt;br&gt;Hash&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
:&lt;br&gt;Guid&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;font color="#ff0000"&gt;{00000000-0000-0000-0000-000000000000}&lt;br&gt;&lt;/font&gt;CertStoreName : 
(null)&lt;br&gt;CertCheckMode : 0&lt;br&gt;RevocationFreshnessTime : 
0&lt;br&gt;UrlRetrievalTimeout : 0&lt;br&gt;SslCtlIdentifier : (null)&lt;br&gt;SslCtlStoreName : 
(null)&lt;br&gt;Flags : 0&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Here &lt;b&gt;Hash&lt;/b&gt; will have the same value as the Thumbprint in your SSL certificate. You will notice that the &lt;b&gt;Guid&lt;/b&gt; is all zero in a 
non-working scenario. You may see the &lt;b&gt;Hash&lt;/b&gt; either having some 
value or blank. Even if we remove the certificate from the web site, and then 
run "httpcfg query ssl", the site with all &lt;b&gt;Guid&lt;/b&gt; as all "0" will 
still be listed. If you see the GUID as "{0000...............000}, there is a 
problem.&lt;/p&gt;
&lt;p&gt;We need to remove this entry by running the command "httpcfg delete ssl -i 
&amp;lt;IP:Port Number&amp;gt;". In the above example, we need to type "httpcfg delete 
ssl -i 192.168.100.234:443". Once we remove it, then we need to reinstall the 
certificate back on to the web site.&lt;/p&gt;
&lt;p&gt;Also once certificate is installed, in the cmd prompt type in "httpcfg query 
ssl" to confirm the GUID is no longer all 0.&lt;/p&gt;
&lt;p&gt;This&amp;nbsp;fixed the issue for&amp;nbsp;the&amp;nbsp;web site on the failing IP address.&lt;/p&gt;
&lt;p&gt;Hope this helps someone.&lt;/p&gt;
&lt;p&gt;Till next time, Cheers!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8553654" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/SSL/default.aspx">SSL</category><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/Troubleshooting/default.aspx">Troubleshooting</category></item><item><title>HTTP to HTTPS (SSL) Web Request Redirection</title><link>http://blogs.msdn.com/saurabh_singh/archive/2008/01/03/http-to-https-ssl-web-request-redirection.aspx</link><pubDate>Fri, 04 Jan 2008 00:47:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6972331</guid><dc:creator>Saurabh Singh</dc:creator><slash:comments>13</slash:comments><comments>http://blogs.msdn.com/saurabh_singh/comments/6972331.aspx</comments><wfw:commentRss>http://blogs.msdn.com/saurabh_singh/commentrss.aspx?PostID=6972331</wfw:commentRss><wfw:comment>http://blogs.msdn.com/saurabh_singh/rsscomments.aspx?PostID=6972331</wfw:comment><description>&lt;p&gt;We often get requests from our customers asking how they can seamlessly redirect web requests from HTTP to HTTPS, i.e. how they can redirect a non-SSL request to an SSL based request. Recently a colleague of mine got a similar issue and we decided to use some existing scripts that we had in our database. Unfortunately none could meet the requirement.&lt;/p&gt; &lt;p&gt;Basically the existing scripts redirected an HTTP request to another URL and that URL was not the original request user had asked for. It took us to let's say the homepage of the site and from there one again has to click on specific links to reach the desired page. So this will be a problem for users who have book-marked their desired web page.&lt;/p&gt; &lt;p&gt;Here are the steps you can try for your website such that all HTTP requests get translated to HTTPS requests and have the original URL intact.&lt;/p&gt; &lt;p&gt;Here are two sample codes which one can try. Both of them should *hopefully* work. First one uses VBScript in an ASP page and second one uses Javascript in an HTML page.&lt;/p&gt; &lt;p&gt;a).&lt;/p&gt; &lt;p&gt;&lt;u&gt;&lt;strong&gt;redirectSSL.asp&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt; &lt;div&gt; &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;lt;%@ Language=VBScript %&amp;gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;lt;% &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;strQueryString = Request.QueryString&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;sslPort = null&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;PlainURL = Right(strQueryString, len(strQueryString) - 4)&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;FindLastCOlon = InStrRev(PlainURL, &lt;span style="color: #006080"&gt;":"&lt;/span&gt;)&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;FirstPart = Mid(PlainURL, 1, FindLastColon - 1)&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;LastPart = Mid(PlainURL, FindLastColon)&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;LastPart = (Mid(LastPart, InStr(LastPart, &lt;span style="color: #006080"&gt;"/"&lt;/span&gt;)))&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;'If the SSL Port is not the default 443, you need to uncomment the line below, by default SSL port is 443.&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;'sslPort = ":449"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (sslPort = null) &lt;span style="color: #0000ff"&gt;then&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;    url= FirstPart &amp;amp; LastPart&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;    url = FirstPart &amp;amp; sslPort &amp;amp; LastPart&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;end&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;strSecure = Replace(url, &lt;span style="color: #006080"&gt;"http:"&lt;/span&gt;, &lt;span style="color: #006080"&gt;"https:"&lt;/span&gt;, 1, 1)&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;Response.Redirect strSecure&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;%&amp;gt; &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Steps:&lt;/p&gt;
&lt;p&gt;-- Copy the above code and put in a file redirectSSL.asp under your Website root directory for which you want redirection to work.&lt;/p&gt;
&lt;p&gt;-- Force SSL on the web site. To do that follow the steps mentioned below:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Go to --&amp;gt; &amp;lt;Your_Web_Site&amp;gt; -&amp;gt; Properties -&amp;gt; Directory Security -&amp;gt; Edit (Secure Communications) &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Select Require secure channel (SSL).&lt;/p&gt;
&lt;p&gt;-- Uncheck "Require secure channel (SSL)" option for the redirectSSL.asp page. To achieve that:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Go to --&amp;gt; &amp;lt;Your_Web_Site&amp;gt; -&amp;gt; redirectSSL.asp -&amp;gt; Properties -&amp;gt; File Security -&amp;gt; Edit (Secure Communications) &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Uncheck Require secure channel (SSL).&lt;/p&gt;
&lt;p&gt;So now we are forcing SSL to be used for all of the website contents except the redirectSSL.asp page which can be accessed over non-SSL (HTTP).&lt;/p&gt;
&lt;p&gt;-- In the IIS manager -&amp;gt; &amp;lt;Your_Web_Site&amp;gt; -&amp;gt; Properties -&amp;gt; Custom Errors, modify the entry for 403;4 to look like this:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/saurabh_singh/WindowsLiveWriter/b4042bfb6c64_11B6E/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="465" alt="image" src="http://blogs.msdn.com/blogfiles/saurabh_singh/WindowsLiveWriter/b4042bfb6c64_11B6E/image_thumb.png" width="472" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Now if you try to browse to some URL, let's say &lt;font color="#ff8040"&gt;http://www.abc.com/asp/test/ssl/iistsart.htm&lt;/font&gt;, you will be redirected to &lt;font color="#ff8040"&gt;http&lt;strong&gt;&lt;u&gt;s&lt;/u&gt;&lt;/strong&gt;://www.abc.com/asp/test/ssl/iistsart.htm, &lt;/font&gt;&lt;font color="#ffffff"&gt;without you requiring to modify HTTP to HTTPS.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;If your SSL port is not the default port 443 then you need to un-comment a line in the code as mentioned in there and it will redirect the request to the appropriate URL with corrected SSL port embedded in it.&lt;/p&gt;
&lt;p&gt;b).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;redirectSSL.html&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;lt;html&amp;gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;lt;head&amp;gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;lt;script language=&lt;span style="color: #006080"&gt;"javascript"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; currentURL=location.href.substring(0,5)&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;(currentURL.toLowerCase()!=&lt;span style="color: #006080"&gt;"https"&lt;/span&gt;)&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;{&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;currentURL = location.href.substring(4,location.href.lastIndexOf(&lt;span style="color: #006080"&gt;''&lt;/span&gt;))&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; portStartPos = currentURL.lastIndexOf(&lt;span style="color: #006080"&gt;':'&lt;/span&gt;)&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; sslPort = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;(portStartPos!=0)&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;{&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; relativeURL = currentURL.substring(portStartPos)&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; postPortURL = relativeURL.substring(relativeURL.indexOf(&lt;span style="color: #006080"&gt;'/'&lt;/span&gt;))&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; URL = currentURL.substring(0,portStartPos)&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// If you are running your SSL site on a non default port other than 443 then uncomment the next line and add the right Port number.&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;//sslPort = ":447"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;(sslPort == &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;    currentURL = URL + postPortURL&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;    currentURL = URL + sslPort + postPortURL&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; targetURL = &lt;span style="color: #006080"&gt;"https"&lt;/span&gt; + currentURL&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;window.location = targetURL&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;lt;/script&amp;gt; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;lt;/head&amp;gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;lt;/html&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Steps:&lt;/p&gt;
&lt;p&gt;-- Copy the above code and put in a file redirectSSL.html under your Website root directory for which you want redirection to work.&lt;/p&gt;
&lt;p&gt;-- Force SSL on the web site. To do that follow the steps mentioned below:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Go to --&amp;gt; &amp;lt;Your_Web_Site&amp;gt; -&amp;gt; Properties -&amp;gt; Directory Security -&amp;gt; Edit (Secure Communications) &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Select Require secure channel (SSL).&lt;/p&gt;
&lt;p&gt;So now we are forcing SSL to be used for all of the Website contents.&lt;/p&gt;
&lt;p&gt;-- In the IIS manager -&amp;gt; &amp;lt;Your_Website&amp;gt; -&amp;gt; Properties -&amp;gt; custom Errors, modify the entry for 403;4 to look like this:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/saurabh_singh/WindowsLiveWriter/b4042bfb6c64_11B6E/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="465" alt="image" src="http://blogs.msdn.com/blogfiles/saurabh_singh/WindowsLiveWriter/b4042bfb6c64_11B6E/image_thumb_1.png" width="472" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;You need not follow the step below since we are using File Type for custom error page and not a URL as shown above in the picture. If you select URL as Type above then you will need to follow the step below.&lt;/p&gt;
&lt;p&gt;"&lt;font color="#ff8040"&gt;-- Uncheck "Require secure channel (SSL)" option for the redirectSSL.html page. To achieve that:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Go to --&amp;gt; &amp;lt;Your_Web_Site&amp;gt; -&amp;gt; redirectSSL.asp -&amp;gt; Properties -&amp;gt; File Security -&amp;gt; Edit (Secure Communications) &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Uncheck Require secure channel (SSL).&lt;/font&gt;"&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This is all you need and you should see your URL changing automagically from HTTP to HTTPS (SSL). &lt;/p&gt;
&lt;p&gt;Hope this helps...&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6972331" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/SSL/default.aspx">SSL</category><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/Code+Sample/default.aspx">Code Sample</category><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/Setup/default.aspx">Setup</category></item><item><title>Certificate Trust List not being honored by IIS 5.0/6.0/7.0?</title><link>http://blogs.msdn.com/saurabh_singh/archive/2007/12/07/certificate-trust-list-not-being-honored-by-iis-5-0-6-0-7-0.aspx</link><pubDate>Sat, 08 Dec 2007 00:36:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6697278</guid><dc:creator>Saurabh Singh</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/saurabh_singh/comments/6697278.aspx</comments><wfw:commentRss>http://blogs.msdn.com/saurabh_singh/commentrss.aspx?PostID=6697278</wfw:commentRss><wfw:comment>http://blogs.msdn.com/saurabh_singh/rsscomments.aspx?PostID=6697278</wfw:comment><description>&lt;p&gt;Something one should be aware of if one is dealing with Client certificate and assuming Certificate Trust List (CTL) will limit the list of Trusted Certificate Authorities (CA's) being sent to the client during the initial SSL handshake.&lt;/p&gt; &lt;p&gt;In IIS 5.0 Post MS04-011 update and IIS 6.0/7.0 using CTL's you cannot limit the list of CA's sent back to the client during the SSL/TLS handshake. i.e. you can't use CTL's to limit the list of certificates that Internet Explorer is showing. IE will show all the certificates irrespective of whether the issuing CA is a part of the CTL or not.&lt;/p&gt; &lt;p&gt;This however is not applicable to Apache web server. Apache will send the list of CA's which are part of the CTL. The above behavior was implemented in IIS as a security design feature. You can use OpenSSL to check the behavior:&lt;/p&gt; &lt;p&gt;Let's assume we have a web site www.test.com which accepts client certificates. OpenSSL will show the following transaction. Note that it sends the list of all the CA's even if you have configured CTL to allow specific CA's.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;C:\&amp;gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;OpenSSL s_client -connect www.test.com:443 -prexit&lt;/strong&gt;&lt;br&gt;&lt;/font&gt;Loading 'screen' into random state - done&lt;br&gt;CONNECTED(00000790)&lt;br&gt;depth=0 /C=CA/ST=Karnataka/L=Bangalore/O=abc/OU=IIS/CN=www.test.com&lt;br&gt;verify error:num=20:unable to get local issuer certificate&lt;br&gt;verify return:1&lt;br&gt;depth=0 /C=CA/ST=Karnataka/L=Bangalore/O=abc/OU=IIS/CN=www.test.com&lt;br&gt;verify error:num=27:certificate not trusted&lt;br&gt;verify return:1&lt;br&gt;depth=0 /C=CA/ST=Karnataka/L=Bangalore/O=abc/OU=IIS/CN=www.test.com&lt;br&gt;verify error:num=21:unable to verify the first certificate&lt;br&gt;verify return:1&lt;br&gt;---&lt;br&gt;Certificate chain&lt;br&gt;0 s:/C=CA/ST=Karnataka/L=Bangalore/O=abc/OU=IIS/CN=www.test.com&lt;br&gt;&amp;nbsp;&amp;nbsp; i:/DC=com/DC=Saurabh1/CN=Microsoft&lt;br&gt;---&lt;br&gt;Server certificate&lt;br&gt;-----BEGIN CERTIFICATE-----&lt;br&gt;MIIE3DCCA8SgAwIBAgIKEfew+wAAAAAANTANBgkqhkiG9w0BAQUFADBDMRMwEQYK&lt;br&gt;CZImiZPyLGQBGRYDY29tMRgwFgYKCZImiZPyLGQBGRYIU2F1cmFiaDExEjAQBgNV&lt;br&gt;BAMTCU1pY3Jvc29mdDAeFw0wNzExMTYyMzE1MjFaFw0wOTExMTUyMzE1MjFaMGgx&lt;br&gt;CzAJBgNVBAYTAkNBMRIwEAYDVQQIEwlLYXJuYXRha2ExEjAQBgNVBAcTCUJhbmdh&lt;br&gt;bG9yZTEMMAoGA1UEChMDYWJjMQwwCgYDVQQLEwNJSVMxFTATBgNVBAMTDHd3dy50&lt;br&gt;ZXN0LmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAyHwhBcSOgyfAe2WJ&lt;br&gt;2m391qWNTEKj9ScSKrbrzxEFWqEKIReH5pkabxG188vX1uQoo5MUCGd3WIEAb3Xa&lt;br&gt;T+mY7P/nA3fwMEUjF1apwXPwQf8hpx5GXhPM6YjyizFGxq06qgNTG3+gCh8arwhu&lt;br&gt;u8f9zKOEUicGDOJaQHIK1ofp4G8CAwEAAaOCAi8wggIrMAsGA1UdDwQEAwIFoDBE&lt;br&gt;BgkqhkiG9w0BCQ8ENzA1MA4GCCqGSIb3DQMCAgIAgDAOBggqhkiG9w0DBAICAIAw&lt;br&gt;BwYFKw4DAgcwCgYIKoZIhvcNAwcwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHQYDVR0O&lt;br&gt;BBYEFBi8sz9sklijc8tObd/kfYp13IQXMB8GA1UdIwQYMBaAFAVRxGOV1iHL6wJC&lt;br&gt;f2vFzSTt5QFwMEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly9sYXhtaW5iLnNhdXJh&lt;br&gt;YmgxLmNvbS9DZXJ0RW5yb2xsL01pY3Jvc29mdC5jcmwwggEVBggrBgEFBQcBAQSC&lt;br&gt;AQcwggEDMIGpBggrBgEFBQcwAoaBnGxkYXA6Ly8vQ049TWljcm9zb2Z0LENOPUFJ&lt;br&gt;QSxDTj1QdWJsaWMlMjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxDTj1Db25m&lt;br&gt;aWd1cmF0aW9uLERDPVNhdXJhYmgxLERDPWNvbT9jQUNlcnRpZmljYXRlP2Jhc2U/&lt;br&gt;b2JqZWN0Q2xhc3M9Y2VydGlmaWNhdGlvbkF1dGhvcml0eTBVBggrBgEFBQcwAoZJ&lt;br&gt;aHR0cDovL2xheG1pbmIuc2F1cmFiaDEuY29tL0NlcnRFbnJvbGwvTEFYTUlOQi5T&lt;br&gt;YXVyYWJoMS5jb21fTWljcm9zb2Z0LmNydDAhBgkrBgEEAYI3FAIEFB4SAFcAZQBi&lt;br&gt;AFMAZQByAHYAZQByMA0GCSqGSIb3DQEBBQUAA4IBAQAPf48JnKDC5qnGUOwzPsVY&lt;br&gt;iz454kHCa6hWxO4L8Lf4uZ/iTwhjvG+LsPZpsijxAkpa/Me2YAtTJS8HaKa0l+on&lt;br&gt;VAsDl4AJLK0epH7iQUfahe5BH3DxYcXFi2uAZeSFa12STxa5Ywtknrlxelimzak+&lt;br&gt;CgEZTSUDTtSDAOxwIpIXlmsPzBmaI7Cx6+R0Kul3H+DPRP/iE/Qh7yzlXbDqcAsA&lt;br&gt;i91ungRcHtiFxkLSwfRbV/qyr2OszKa+7SM9GJ6R0lJC5oRBy/JkQqWiAYvRaf5J&lt;br&gt;iTdC7eourVL+TH+GhXnFpmCs+YlotkWLj7EsLKwKiEuX8mm8T6UXKzis2OazfHfh&lt;br&gt;-----END CERTIFICATE-----&lt;br&gt;subject=/C=CA/ST=Karnataka/L=Bangalore/O=abc/OU=IIS/CN=www.test.com&lt;br&gt;issuer=/DC=com/DC=Saurabh1/CN=Microsoft&lt;br&gt;---&lt;br&gt;No client certificate CA names sent&lt;br&gt;---&lt;br&gt;SSL handshake has read 1384 bytes and written 324 bytes&lt;br&gt;---&lt;br&gt;New, TLSv1/SSLv3, Cipher is RC4-MD5&lt;br&gt;Server public key is 1024 bit&lt;br&gt;SSL-Session:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Protocol&amp;nbsp; : TLSv1&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cipher&amp;nbsp;&amp;nbsp;&amp;nbsp; : RC4-MD5&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Session-ID: B21A0000950C415B75F380724109AE354A29437F77C62FCEF493BD823C62C616&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Session-ID-ctx:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Master-Key: 6A2F53DBE5ED1565D1E7CB218B4D1B7AF7CFE07594469D69772C26232BBB0253326ACC25A106D3A6B452&lt;br&gt;1B3B0989D57D&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Key-Arg&amp;nbsp;&amp;nbsp; : None&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Start Time: 1197061986&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Timeout&amp;nbsp;&amp;nbsp; : 300 (sec)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Verify return code: 21 (unable to verify the first certificate)&lt;br&gt;---&lt;br&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;GET /test.asp&lt;/font&gt;&lt;br&gt;&lt;/strong&gt;depth=0 /C=CA/ST=Karnataka/L=Bangalore/O=abc/OU=IIS/CN=www.test.com&lt;br&gt;verify error:num=20:unable to get local issuer certificate&lt;br&gt;verify return:1&lt;br&gt;depth=0 /C=CA/ST=Karnataka/L=Bangalore/O=abc/OU=IIS/CN=www.test.com&lt;br&gt;verify error:num=27:certificate not trusted&lt;br&gt;verify return:1&lt;br&gt;depth=0 /C=CA/ST=Karnataka/L=Bangalore/O=abc/OU=IIS/CN=www.test.com&lt;br&gt;verify error:num=21:unable to verify the first certificate&lt;br&gt;verify return:1&lt;br&gt;read R BLOCK&lt;br&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "&lt;a href="http://www.w3.org/TR/html4/strict.dtd&amp;quot;"&gt;http://www.w3.org/TR/html4/strict.dtd"&lt;/a&gt;&amp;gt;&lt;br&gt;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&amp;lt;TITLE&amp;gt;The page requires a client certificate&amp;lt;/TITLE&amp;gt;&lt;br&gt;&amp;lt;META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252"&amp;gt;&lt;br&gt;&amp;lt;STYLE type="text/css"&amp;gt;&lt;br&gt;&amp;nbsp; BODY { font: 8pt/12pt verdana }&lt;br&gt;&amp;nbsp; H1 { font: 13pt/15pt verdana }&lt;br&gt;&amp;nbsp; H2 { font: 8pt/12pt verdana }&lt;br&gt;&amp;nbsp; A:link { color: red }&lt;br&gt;&amp;nbsp; A:visited { color: maroon }&lt;br&gt;&amp;lt;/STYLE&amp;gt;&lt;br&gt;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&amp;lt;TABLE width=500 border=0 cellspacing=10&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;  &lt;p&gt;&amp;lt;h1&amp;gt;The page requires a client certificate&amp;lt;/h1&amp;gt;&lt;br&gt;The page you are attempting to access requires your browser to have a Secure Sockets Layer (SSL) cli&lt;br&gt;ent certificate that the Web server will recognize. The client certificate is used for identifying y&lt;br&gt;ou as a valid user of the resource.&lt;br&gt;&amp;lt;hr&amp;gt;&lt;br&gt;&amp;lt;p&amp;gt;Please try the following:&amp;lt;/p&amp;gt;&lt;br&gt;&amp;lt;ul&amp;gt;&lt;br&gt;&amp;lt;li&amp;gt;Contact the Web site administrator if you believe you should be able to view this directory or p&lt;br&gt;age without a client certificate, or to obtain a client certificate.&amp;lt;/li&amp;gt;&lt;br&gt;&amp;lt;li&amp;gt;If you already have a client certificate, use your Web browser's security features to ensure tha&lt;br&gt;t your client certificate is installed properly. (Some Web browsers refer&lt;br&gt;to client certificates as browser or personal certificates.)&amp;lt;/li&amp;gt;&lt;br&gt;&amp;lt;/ul&amp;gt;&lt;br&gt;&amp;lt;h2&amp;gt;HTTP Error 403.7 - Forbidden: SSL client certificate is required.&amp;lt;br&amp;gt;Internet Information Servic&lt;br&gt;es (IIS)&amp;lt;/h2&amp;gt;&lt;br&gt;&amp;lt;hr&amp;gt;&lt;br&gt;&amp;lt;p&amp;gt;Technical Information (for support personnel)&amp;lt;/p&amp;gt;&lt;br&gt;&amp;lt;ul&amp;gt;&lt;br&gt;&amp;lt;li&amp;gt;Go to &amp;lt;a href="&lt;a href="http://go.microsoft.com/fwlink/?linkid=8180&amp;quot;"&gt;http://go.microsoft.com/fwlink/?linkid=8180"&lt;/a&gt;&amp;gt;Microsoft Product Support Services&amp;lt;/&lt;br&gt;a&amp;gt; and perform a title search for the words &amp;lt;b&amp;gt;HTTP&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;403&amp;lt;/b&amp;gt;.&amp;lt;/li&amp;gt;&lt;br&gt;&amp;lt;li&amp;gt;Open &amp;lt;b&amp;gt;IIS Help&amp;lt;/b&amp;gt;, which is accessible in IIS Manager (inetmgr),&lt;br&gt;and search for topics titled &amp;lt;b&amp;gt;About Certificates&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Using Certificate Trust Lists&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;En&lt;br&gt;abling Client Certificates&amp;lt;/b&amp;gt;, and &amp;lt;b&amp;gt;About Custom Error Messages&amp;lt;/b&amp;gt;.&amp;lt;/li&amp;gt;&lt;br&gt;&amp;lt;/ul&amp;gt;  &lt;p&gt;&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;/TABLE&amp;gt;&amp;lt;/BODY&amp;gt;&amp;lt;/HTML&amp;gt;  &lt;p&gt;read:errno=0&lt;br&gt;---&lt;br&gt;Certificate chain&lt;br&gt;0 s:/C=CA/ST=Karnataka/L=Bangalore/O=abc/OU=IIS/CN=www.test.com&lt;br&gt;&amp;nbsp;&amp;nbsp; i:/DC=com/DC=Saurabh1/CN=Microsoft&lt;br&gt;---&lt;br&gt;Server certificate&lt;br&gt;-----BEGIN CERTIFICATE-----&lt;br&gt;MIIE3DCCA8SgAwIBAgIKEfew+wAAAAAANTANBgkqhkiG9w0BAQUFADBDMRMwEQYK&lt;br&gt;CZImiZPyLGQBGRYDY29tMRgwFgYKCZImiZPyLGQBGRYIU2F1cmFiaDExEjAQBgNV&lt;br&gt;BAMTCU1pY3Jvc29mdDAeFw0wNzExMTYyMzE1MjFaFw0wOTExMTUyMzE1MjFaMGgx&lt;br&gt;CzAJBgNVBAYTAkNBMRIwEAYDVQQIEwlLYXJuYXRha2ExEjAQBgNVBAcTCUJhbmdh&lt;br&gt;bG9yZTEMMAoGA1UEChMDYWJjMQwwCgYDVQQLEwNJSVMxFTATBgNVBAMTDHd3dy50&lt;br&gt;ZXN0LmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAyHwhBcSOgyfAe2WJ&lt;br&gt;2m391qWNTEKj9ScSKrbrzxEFWqEKIReH5pkabxG188vX1uQoo5MUCGd3WIEAb3Xa&lt;br&gt;T+mY7P/nA3fwMEUjF1apwXPwQf8hpx5GXhPM6YjyizFGxq06qgNTG3+gCh8arwhu&lt;br&gt;u8f9zKOEUicGDOJaQHIK1ofp4G8CAwEAAaOCAi8wggIrMAsGA1UdDwQEAwIFoDBE&lt;br&gt;BgkqhkiG9w0BCQ8ENzA1MA4GCCqGSIb3DQMCAgIAgDAOBggqhkiG9w0DBAICAIAw&lt;br&gt;BwYFKw4DAgcwCgYIKoZIhvcNAwcwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHQYDVR0O&lt;br&gt;BBYEFBi8sz9sklijc8tObd/kfYp13IQXMB8GA1UdIwQYMBaAFAVRxGOV1iHL6wJC&lt;br&gt;f2vFzSTt5QFwMEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly9sYXhtaW5iLnNhdXJh&lt;br&gt;YmgxLmNvbS9DZXJ0RW5yb2xsL01pY3Jvc29mdC5jcmwwggEVBggrBgEFBQcBAQSC&lt;br&gt;AQcwggEDMIGpBggrBgEFBQcwAoaBnGxkYXA6Ly8vQ049TWljcm9zb2Z0LENOPUFJ&lt;br&gt;QSxDTj1QdWJsaWMlMjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxDTj1Db25m&lt;br&gt;aWd1cmF0aW9uLERDPVNhdXJhYmgxLERDPWNvbT9jQUNlcnRpZmljYXRlP2Jhc2U/&lt;br&gt;b2JqZWN0Q2xhc3M9Y2VydGlmaWNhdGlvbkF1dGhvcml0eTBVBggrBgEFBQcwAoZJ&lt;br&gt;aHR0cDovL2xheG1pbmIuc2F1cmFiaDEuY29tL0NlcnRFbnJvbGwvTEFYTUlOQi5T&lt;br&gt;YXVyYWJoMS5jb21fTWljcm9zb2Z0LmNydDAhBgkrBgEEAYI3FAIEFB4SAFcAZQBi&lt;br&gt;AFMAZQByAHYAZQByMA0GCSqGSIb3DQEBBQUAA4IBAQAPf48JnKDC5qnGUOwzPsVY&lt;br&gt;iz454kHCa6hWxO4L8Lf4uZ/iTwhjvG+LsPZpsijxAkpa/Me2YAtTJS8HaKa0l+on&lt;br&gt;VAsDl4AJLK0epH7iQUfahe5BH3DxYcXFi2uAZeSFa12STxa5Ywtknrlxelimzak+&lt;br&gt;CgEZTSUDTtSDAOxwIpIXlmsPzBmaI7Cx6+R0Kul3H+DPRP/iE/Qh7yzlXbDqcAsA&lt;br&gt;i91ungRcHtiFxkLSwfRbV/qyr2OszKa+7SM9GJ6R0lJC5oRBy/JkQqWiAYvRaf5J&lt;br&gt;iTdC7eourVL+TH+GhXnFpmCs+YlotkWLj7EsLKwKiEuX8mm8T6UXKzis2OazfHfh&lt;br&gt;-----END CERTIFICATE-----&lt;br&gt;subject=/C=CA/ST=Karnataka/L=Bangalore/O=abc/OU=IIS/CN=www.test.com&lt;br&gt;issuer=/DC=com/DC=Saurabh1/CN=Microsoft&lt;br&gt;---&lt;br&gt;&lt;strong&gt;Acceptable client certificate CA names&lt;/strong&gt;&lt;br&gt;&lt;font color="#ff0000"&gt;/DC=com/DC=Saurabh1/CN=Microsoft&lt;br&gt;/DC=com/DC=Saurabh1/CN=Saurabh CA&lt;br&gt;/C=US/O=VeriSign, Inc./OU=Class 1 Public Primary Certification Authority - G2/OU=(c) 1998 VeriSign,&lt;br&gt;Inc. - For authorized use only/OU=VeriSign Trust Network&lt;br&gt;/C=US/O=VeriSign, Inc./OU=Class 4 Public Primary Certification Authority - G2/OU=(c) 1998 VeriSign,&lt;br&gt;Inc. - For authorized use only/OU=VeriSign Trust Network&lt;br&gt;/C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting/OU=Certification Services Division/CN=Thawte P&lt;br&gt;ersonal Freemail CA/emailAddress=personal-freemail@thawte.com&lt;br&gt;/C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting/OU=Certification Services Division/CN=Thawte P&lt;br&gt;ersonal Premium CA/emailAddress=personal-premium@thawte.com&lt;br&gt;/C=US/O=First Data Digital Certificates Inc./CN=First Data Digital Certificates Inc. Certification A&lt;br&gt;uthority&lt;br&gt;/C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting/OU=Certification Services Division/CN=Thawte P&lt;br&gt;ersonal Basic CA/emailAddress=personal-basic@thawte.com&lt;br&gt;/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority&lt;br&gt;/C=US/O=VeriSign, Inc./OU=Class 2 Public Primary Certification Authority&lt;br&gt;/C=US/O=VeriSign, Inc./OU=Class 1 Public Primary Certification Authority&lt;br&gt;/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority - G2/OU=(c) 1998 VeriSign,&lt;br&gt;Inc. - For authorized use only/OU=VeriSign Trust Network&lt;br&gt;/C=HU/L=Budapest/O=NetLock Halozatbiztonsagi Kft./OU=Tanusitvanykiadok/CN=NetLock Uzleti (Class B) T&lt;br&gt;anusitvanykiado&lt;br&gt;/C=US/O=GTE Corporation/CN=GTE CyberTrust Root&lt;br&gt;/C=US/O=GTE Corporation/OU=GTE CyberTrust Solutions, Inc./CN=GTE CyberTrust Global Root&lt;br&gt;/C=US/O=Entrust.net/OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/OU=(c) 1999 Entrust.net Li&lt;br&gt;mited/CN=Entrust.net Secure Server Certification Authority&lt;br&gt;/C=HU/ST=Hungary/L=Budapest/O=NetLock Halozatbiztonsagi Kft./OU=Tanusitvanykiadok/CN=NetLock Kozjegy&lt;br&gt;zoi (Class A) Tanusitvanykiado&lt;br&gt;/C=US/O=VeriSign, Inc./OU=Class 2 Public Primary Certification Authority - G2/OU=(c) 1998 VeriSign,&lt;br&gt;Inc. - For authorized use only/OU=VeriSign Trust Network&lt;br&gt;/C=US/O=GTE Corporation/OU=GTE CyberTrust Solutions, Inc./CN=GTE CyberTrust Root&lt;br&gt;/C=HU/L=Budapest/O=NetLock Halozatbiztonsagi Kft./OU=Tanusitvanykiadok/CN=NetLock Expressz (Class C)&lt;br&gt;Tanusitvanykiado&lt;br&gt;/OU=Copyright (c) 1997 Microsoft Corp./OU=Microsoft Corporation/CN=Microsoft Root Authority&lt;br&gt;/DC=com/DC=microsoft/CN=Microsoft Root Certificate Authority&lt;/font&gt;&lt;br&gt;---&lt;br&gt;SSL handshake has read 7991 bytes and written 740 bytes&lt;br&gt;---&lt;br&gt;New, TLSv1/SSLv3, Cipher is RC4-MD5&lt;br&gt;Server public key is 1024 bit&lt;br&gt;SSL-Session:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Protocol&amp;nbsp; : TLSv1&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cipher&amp;nbsp;&amp;nbsp;&amp;nbsp; : RC4-MD5&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Session-ID: 7F0A00002D0024D14CCB9D959D185669A22B6F9ECF613E75C0B9A7DD75DD436A&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Session-ID-ctx:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Master-Key: A17E388F8744B03CAA268418A700F92B5BABDBD09908F8E5503B299579CA4C09A93CCEC5BBCB7BD2F39A&lt;br&gt;2C64EF36F674&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Key-Arg&amp;nbsp;&amp;nbsp; : None&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Start Time: 1197061993&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Timeout&amp;nbsp;&amp;nbsp; : 300 (sec)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Verify return code: 21 (unable to verify the first certificate)&lt;br&gt;---  &lt;p&gt;This is the default behavior for IIS 5.0 (Post MS04-011), IIS 6.0 and to my knowledge will remain so going forward with IIS 7.0 as well. &lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6697278" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/Client+Certificate/default.aspx">Client Certificate</category><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/SSL/default.aspx">SSL</category></item><item><title>Wildcard SSL certificate in IIS 6.0, Windows 2003 Sp1 and above</title><link>http://blogs.msdn.com/saurabh_singh/archive/2007/11/17/wildcard-ssl-certificate-in-iis-6-0-windows-2003-sp1-and-above.aspx</link><pubDate>Sat, 17 Nov 2007 07:12:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6327316</guid><dc:creator>Saurabh Singh</dc:creator><slash:comments>77</slash:comments><comments>http://blogs.msdn.com/saurabh_singh/comments/6327316.aspx</comments><wfw:commentRss>http://blogs.msdn.com/saurabh_singh/commentrss.aspx?PostID=6327316</wfw:commentRss><wfw:comment>http://blogs.msdn.com/saurabh_singh/rsscomments.aspx?PostID=6327316</wfw:comment><description>Here I will be talking about configuring SSL wildcard certificates in IIS 6.0 on Win2k3 SP1 and above. You may have a scenario wherein you want to have the same certificate installed for multiple Websites. Now in a normal scenarios this is not possible....(&lt;a href="http://blogs.msdn.com/saurabh_singh/archive/2007/11/17/wildcard-ssl-certificate-in-iis-6-0-windows-2003-sp1-and-above.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6327316" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/SSL/default.aspx">SSL</category><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/Setup/default.aspx">Setup</category></item><item><title>You get a Security Alert when you try to access an SSL enabled web site when certificate has been issued by an internal root CA...</title><link>http://blogs.msdn.com/saurabh_singh/archive/2007/11/07/you-get-a-security-alert-when-you-try-to-access-an-ssl-enabled-web-site-when-certificate-has-been-issued-by-an-internal-root-ca.aspx</link><pubDate>Thu, 08 Nov 2007 01:39:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5970609</guid><dc:creator>Saurabh Singh</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/saurabh_singh/comments/5970609.aspx</comments><wfw:commentRss>http://blogs.msdn.com/saurabh_singh/commentrss.aspx?PostID=5970609</wfw:commentRss><wfw:comment>http://blogs.msdn.com/saurabh_singh/rsscomments.aspx?PostID=5970609</wfw:comment><description>Let's say you have your own internal Root Certificate Authority (CA) and you use it to grant server certificates to your Web sites. You are able to browse to your web site over SSL and can access the page. Things look good so far. However you get an unwanted...(&lt;a href="http://blogs.msdn.com/saurabh_singh/archive/2007/11/07/you-get-a-security-alert-when-you-try-to-access-an-ssl-enabled-web-site-when-certificate-has-been-issued-by-an-internal-root-ca.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5970609" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/SSL/default.aspx">SSL</category><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/Certificate/default.aspx">Certificate</category><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/Troubleshooting/default.aspx">Troubleshooting</category></item><item><title>Troubleshooting SSL related issues with IIS</title><link>http://blogs.msdn.com/saurabh_singh/archive/2007/09/05/troubleshooting-ssl-related-issues-with-iis.aspx</link><pubDate>Thu, 06 Sep 2007 00:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4772046</guid><dc:creator>Saurabh Singh</dc:creator><slash:comments>34</slash:comments><comments>http://blogs.msdn.com/saurabh_singh/comments/4772046.aspx</comments><wfw:commentRss>http://blogs.msdn.com/saurabh_singh/commentrss.aspx?PostID=4772046</wfw:commentRss><wfw:comment>http://blogs.msdn.com/saurabh_singh/rsscomments.aspx?PostID=4772046</wfw:comment><description>&lt;p&gt;In this&amp;nbsp;post I am going to discuss troubleshooting SSL server certificate related issues in IIS. Please remember I am no SSL expert...I am an IIS Asp.Net guy and will discuss issues with regard to SSL with IIS.&lt;/p&gt;

&lt;p&gt;We have seen a lot many times that the issues could have been resolved by our customers if they were aware of some targeted troubleshooting techniques. &lt;/p&gt;

&lt;p&gt;Here&amp;nbsp;I will be walking&amp;nbsp;through the steps which you can follow yourself before requiring to call Microsoft PSS. 
&lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;/u&gt;
&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Problem Description&lt;/u&gt; 
&lt;/p&gt;

&lt;p&gt;The most common error associated with SSL not working for an IIS website is "The page cannot be displayed" or "Cannot find server or DNS Error". &lt;/p&gt;

&lt;p&gt;&lt;u&gt;Troubleshooting steps to be followed&lt;/u&gt;:&lt;br&gt;&lt;br&gt;First thing first: You notice the above error when you browse to your website over SSL (HTTPS). Do you also see the same behavior when you access the website over HTTP? If yes then&amp;nbsp;there is a different problem you need to address first. SSL doesn't come into picture when we access a site over HTTP. &lt;br&gt;So if you are facing the problem in both the scenarios ensure you first troubleshoot why the request is not reaching the IIS server...maybe a DNS configuration etc. &lt;/p&gt;

&lt;p&gt;My topic today is SSL with IIS so I won't be focusing on HTTP. 
&lt;/p&gt;

&lt;p&gt;We have the SSL port listed in IIS mmc as shown below. By default it's 443. You can configure it to listen on a different port. 
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/saurabh_singh/WindowsLiveWriter/ccabc975c65b_142D1/image.png" mce_href="http://blogs.msdn.com/blogfiles/saurabh_singh/WindowsLiveWriter/ccabc975c65b_142D1/image.png" atomicselection="true"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/saurabh_singh/WindowsLiveWriter/ccabc975c65b_142D1/image_thumb.png" style="border-width: 0px;" alt="image" mce_src="http://blogs.msdn.com/blogfiles/saurabh_singh/WindowsLiveWriter/ccabc975c65b_142D1/image_thumb.png" border="0" height="461" width="469"&gt;&lt;/a&gt; 
&lt;/p&gt;

&lt;p&gt;Now, also check whether the issue is happening for all the users, i.e. External and internal users to the network. If the issue is happening only for let's say external users check whether the requests are coming over a firewall like ISA etc. At times Firewalls may block the SSL port. You may want to check the firewall settings to unblock the SSL port. Also firewalls like ISA requires certificate to be published on it as well apart from IIS server. Ensure that the certificate that we have installed on ISA is valid. In case of ISA, if you have renewed the cert on IIS server but not on ISA users will still see the old certificate and not the new certificate. Ensure that you replace the old certificate on ISA with the new certificate. Also&amp;nbsp;you may want to check if the security gateway (if any)&amp;nbsp;such as NFUSE (Citrix) controllers is still referencing the old certificate. 
&lt;/p&gt;
&lt;font color="#437c17"&gt;
&lt;p&gt;&lt;strike&gt;&lt;i&gt;Also at times if you see a wrong certificate being displayed for your Web Site, ensure that you do not have kernel-mode SSL enabled on your web server.Although this improves the performance but&amp;nbsp;I recommend to have it disabled when you have multiple SSL enabled-websites on your server. Kernel-mode SSL is&amp;nbsp;only recommended if you have just one site, mostly static content and no client certificates. In all other cases you should use User-mode SSL.&lt;/i&gt;&lt;/strike&gt;&lt;/p&gt;

&lt;p&gt;&lt;strike&gt;&lt;i&gt;Please find this &lt;a href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/6df8492c-02d6-45bf-a74e-0990d5654ff5.mspx?mfr=true" target="_blank"&gt;&lt;font color="#669966"&gt;link&lt;/font&gt;&lt;/a&gt; to enable/disable kernel-mode SSL. If it is set to&amp;nbsp;1 it means Kernel-mode SSL is enabled, if absent or set to 0 it means disabled and user-mode SSL will be used.&amp;nbsp;Ensure that you stop and restart http service as shown below after doing the changes. No reboot is required for the above change. 
&lt;/i&gt;&lt;/strike&gt;&lt;/p&gt;

&lt;p&gt;&lt;strike&gt;&lt;i&gt;&amp;gt;net stop http 
&lt;/i&gt;&lt;/strike&gt;&lt;/p&gt;

&lt;p&gt;&lt;strike&gt;&lt;i&gt;&amp;gt;net start http 
&lt;/i&gt;&lt;/strike&gt;&lt;/p&gt;

&lt;p&gt;&lt;strike&gt;&lt;i&gt;&amp;gt;net start w3svc&lt;/i&gt;&lt;/strike&gt;&lt;/p&gt;

&lt;p&gt;[There has been few concerns from people as to why this is suggested. I
do not have a proper answer to it at this point, but I have seen such
issues in some support incidents where disabling Kernel mode SSL had
resolved the above problem]  &lt;br&gt;&lt;/p&gt;&lt;/font&gt;

&lt;p&gt;------------------------------------------------------------------------------------------------------------------------------------------------------------------ 
&lt;/p&gt;

&lt;p&gt;Now once you have isolated the issue to be only with HTTPS&amp;nbsp;and all users let's proceed with the following steps: 
&lt;/p&gt;

&lt;p&gt;Run netstat -an&amp;nbsp;(or fport.exe)&amp;nbsp;for IIS 5 (and netstat -ano for IIS 6)&amp;nbsp;and verify whether IIS is listening on the SSL port. 
&lt;/p&gt;

&lt;p&gt;When you start Internet Information Services (IIS) 6.0 on Microsoft Windows Server 2003, IIS binds to all IP addresses on the server, not just the IP addresses that are assigned to Web sites. This is because of socket pooling enabled for IIS by default. 
&lt;/p&gt;

&lt;p&gt;On IIS 6.0, if the website is listening on "All unassigned" IP address or some specific IP address (like 192.134.123.209 etc)&amp;nbsp;and SSL port 443, verify that Local address entry is 0.0.0.0:443 in netstat output. &lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&amp;gt; netstat -ano 
&lt;/p&gt;

&lt;p&gt;Active Connections 
&lt;/p&gt;

&lt;p&gt;&amp;nbsp; Proto&amp;nbsp; Local Address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Foreign Address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; State&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PID&lt;br&gt;&amp;nbsp; TCP&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:21&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LISTENING&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2396&lt;br&gt;&amp;nbsp; TCP&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:25&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LISTENING&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2396&lt;br&gt;&lt;b&gt;&amp;nbsp; TCP&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:80&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LISTENING&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;br&gt;&lt;/b&gt;&amp;nbsp; TCP&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:81&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LISTENING&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;br&gt;&amp;nbsp; TCP&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:83&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LISTENING&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ................... 
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;TCP&amp;nbsp;&amp;nbsp; 0.0.0.0:443&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.0.0.0:0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LISTENING&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;br&gt;&lt;/b&gt;&amp;nbsp; TCP&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:445&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LISTENING&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;br&gt;&amp;nbsp; TCP&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:446&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LISTENING&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4 
&lt;/p&gt;

&lt;p&gt;Here the PID should show you which process is listening on that port. &lt;br&gt;Now let's say&amp;nbsp;I have configured my website to run on a specific SSL port and that port is being used by a different process, then website will not start up. 
&lt;/p&gt;

&lt;p&gt;Also you won't see the netstat output showing anything like this depending upon the port being used: 
&lt;/p&gt;

&lt;p&gt;TCP&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:80&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LISTENING&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/p&gt;
TCP&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:443&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LISTENING&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;br&gt;
&lt;p&gt;You can run netstat -ano again and see the PID corresponding to the process which is listening on that port. Stopping or disabling that service/process should allow Websites to be up and listening on the desired port. For IIS 5.x you can run&amp;nbsp;&lt;a href="http://www.foundstone.com/us/resources/proddesc/fport.htm" mce_href="http://www.foundstone.com/us/resources/proddesc/fport.htm"&gt;Fport.exe&lt;/a&gt; to find out which process is listening on a specific port. &lt;/p&gt;

&lt;p&gt;The first thing that I check for (strictly my personal preference) when we have issues with SSL is MACHINEKEYS. Yes, this is a very important (I prefer to call strategic) part of your checklist while dealing with SSL issues. In my personal experience it has resolved a lot of&amp;nbsp;issues for our customers. By default machinekeys folder should have permission for Administrator, System and Everyone according to this &lt;a href="http://support.microsoft.com/kb/278381/en-us" mce_href="http://support.microsoft.com/kb/278381/en-us"&gt;KB278381&lt;/a&gt;. Ensure that we inherit the above permission for all child objects under the machinekeys folder, that way all the machine keys have the necessary permissions. 
&lt;/p&gt;

&lt;p&gt;This is done by clicking the "Advanced" button on the security settings page, Clicking the check box "Replace permissions entries on all child objects...." and &lt;br&gt;Apply. This will propagate the settings to the contents in the folder. 
&lt;/p&gt;

&lt;p&gt;Another reason for the above error ('The page cannot be displayed') can be if you do not have a private key corresponding to the SSL server certificate. You can check that by opening the IIS mmc -&amp;gt; &amp;lt;&amp;lt;YourWebSite&amp;gt;&amp;gt; -&amp;gt;Properties -&amp;gt;Directory Security -&amp;gt;Secure Communications -&amp;gt;View certificate -&amp;gt;General -&amp;gt; "You have a private key that corresponds to this certificate" as shown below.&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/saurabh_singh/WindowsLiveWriter/ccabc975c65b_142D1/image_1.png" mce_href="http://blogs.msdn.com/blogfiles/saurabh_singh/WindowsLiveWriter/ccabc975c65b_142D1/image_1.png" atomicselection="true"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/saurabh_singh/WindowsLiveWriter/ccabc975c65b_142D1/image_thumb_1.png" style="border-width: 0px;" alt="image" mce_src="http://blogs.msdn.com/blogfiles/saurabh_singh/WindowsLiveWriter/ccabc975c65b_142D1/image_thumb_1.png" border="0" height="481" width="406"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;If you do not see the above then SSL won't work for your website.&lt;br&gt;You can try running the following command to recover the private key from the certificate thumbprint. &lt;/p&gt;

&lt;p&gt;To associate the certificate with its private key, we run the following command:&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&amp;gt; certutil -repairstore my "c9 66 67 68 49 97 88 7f 05 b8 89 b7 b3 f7 37 c8 c4 da 5f 16" &lt;/p&gt;

&lt;p&gt;Note: "c9 66 67 68 49 97 88 7f 05 b8 89 b7 b3 f7 37 c8 c4 da 5f 16" is the&amp;nbsp;Thumbprint of the missing certificate. You can see this if you double-click on the .cer file, choose the Details tab and select Thumbprint. 
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/saurabh_singh/WindowsLiveWriter/ccabc975c65b_142D1/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/saurabh_singh/WindowsLiveWriter/ccabc975c65b_142D1/image_2.png" atomicselection="true"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/saurabh_singh/WindowsLiveWriter/ccabc975c65b_142D1/image_thumb_2.png" style="border-width: 0px;" alt="image" mce_src="http://blogs.msdn.com/blogfiles/saurabh_singh/WindowsLiveWriter/ccabc975c65b_142D1/image_thumb_2.png" border="0" height="481" width="408"&gt;&lt;/a&gt; 
&lt;/p&gt;

&lt;p&gt;Make sure you use the 2003 version of certutil.exe (with the associated certadm.dll and certcli.dll), or you will not have access to the repairstore command. 
&lt;/p&gt;

&lt;p&gt;If the above command does not get back the private key or for some reason it still does not work you may prefer to get a new certificate from the CA. 
&lt;/p&gt;

&lt;p&gt;One of the best&amp;nbsp;tools that Microsoft has come up with is &lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1251" mce_href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1251"&gt;SSL Diagnostics&lt;/a&gt; to troubleshoot SSL related issues. Just download it to the IIS server and run it&amp;nbsp;and if there is an error due to configuration of&amp;nbsp;IIS or certificate it will show&amp;nbsp;up. You can also use this tool to issue a test certificate&amp;nbsp;for your website to check whether the problem&amp;nbsp;was occurring because of&amp;nbsp;your server&amp;nbsp;certificate or some other IIS configuration related issues. Things that can be shown quickly through this tool includes on "no private key",&amp;nbsp;"SSL port being used by a different process",&amp;nbsp;"machine keys not having enough permission", "IP address conflicts"&amp;nbsp;etc. 
&lt;/p&gt;

&lt;p&gt;Another scenario can be wherein&amp;nbsp;if you view the certificate, it will state that "You have a private key that corresponds to this certificate," and if you run SSL Diagnostics, you'll get the error as below:&lt;/p&gt;

&lt;p&gt;&lt;font color="#ff0000"&gt;#WARNING: You have a private key that corresponds to this certificate but CryptAcquireCertificatePrivateKey failed&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;When you initially go through the IIS Certificate Wizard&amp;nbsp;to create a new certificate, a file is added to the MachineKeys folder. This is the private key. 
&lt;/p&gt;

&lt;p&gt;If you add permissions to the new file in the MachineKeys folder before you process the pending request in the IIS certificate wizard, the certificate will work properly. If you've already gone past that point and got a new certificate,&amp;nbsp;then necessary permissions&amp;nbsp;should be added to the MachineKeys folder and a new certificate request must again be submitted. 
&lt;/p&gt;

&lt;p&gt;Now consider a scenario wherein you are able to access the site through SSL Diagnostics tool (through 'Simulate SSL Handshake')&amp;nbsp;for the same certificate but not through IE.&amp;nbsp;What I&amp;nbsp;mean is your SSL handshake gives no error etc in SSL Diagnostics although when you access the website through IE over SSL it still fails.&amp;nbsp;In that case there could be an IE setting that you may want to check for such a&amp;nbsp;behavior. Check this out &lt;a href="http://support.microsoft.com/?id=811834" mce_href="http://support.microsoft.com/?id=811834"&gt;KB811834&lt;/a&gt;. 
&lt;/p&gt;

&lt;p&gt;Now one last scenario. At times we see customers coming up with requests wherein they want to use the same server certificate for multiple websites. 
&lt;/p&gt;

&lt;p&gt;This is not possible. You cannot use the same certificate for multiple websites on the same server. Check this &lt;a href="http://support.microsoft.com/kb/187504/en-us" mce_href="http://support.microsoft.com/kb/187504/en-us"&gt;KB187504&lt;/a&gt;. 
&lt;/p&gt;

&lt;p&gt;Now there is a workaround in IIS 6.0 Windows 2003 SP1, wherein you can use Wildcard certificates to get a similar functionality. Here is the &lt;a href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/596b9108-b1a7-494d-885d-f8941b07554c.mspx?mfr=true" mce_href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/596b9108-b1a7-494d-885d-f8941b07554c.mspx?mfr=true"&gt;link&lt;/a&gt;. 
&lt;/p&gt;

&lt;p&gt;If you have a Load balanced&amp;nbsp;or clustered environment you can export the same certificate to all the servers and install them on the related websites. It should work fine. 
&lt;/p&gt;

&lt;p&gt;Hope this helps....let me know if there are any questions around the topic. 
&lt;/p&gt;

&lt;p&gt;Cheers!!! &lt;/p&gt;
&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4772046" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/SSL/default.aspx">SSL</category><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/Troubleshooting/default.aspx">Troubleshooting</category></item><item><title>Client Certificate revisited....How to troubleshoot client certificate related issues</title><link>http://blogs.msdn.com/saurabh_singh/archive/2007/06/09/client-certificate-revisited-how-to-troubleshoot-client-certificate-related-issues.aspx</link><pubDate>Sat, 09 Jun 2007 19:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3185914</guid><dc:creator>Saurabh Singh</dc:creator><slash:comments>20</slash:comments><comments>http://blogs.msdn.com/saurabh_singh/comments/3185914.aspx</comments><wfw:commentRss>http://blogs.msdn.com/saurabh_singh/commentrss.aspx?PostID=3185914</wfw:commentRss><wfw:comment>http://blogs.msdn.com/saurabh_singh/rsscomments.aspx?PostID=3185914</wfw:comment><description>&lt;p&gt;Well, I am back to Client certificate again, guess the reason being a lot of support calls that we getting off late&amp;nbsp;are related to any of the following four errors, especially the first two.&lt;/p&gt;
&lt;p&gt;403.7&lt;/p&gt;
&lt;p&gt;403.13&lt;/p&gt;
&lt;p&gt;403.16 &lt;/p&gt;
&lt;p&gt;403.17 ( I will cover .16 and .17 very briefly since they are very self-explanatory and easy to troubleshoot)&lt;/p&gt;
&lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/saurabh_singh/archive/2007/04/14/how-to-setup-iis-and-ad-for-client-certificate-setup-and-authentication.aspx" mce_href="http://blogs.msdn.com/saurabh_singh/archive/2007/04/14/how-to-setup-iis-and-ad-for-client-certificate-setup-and-authentication.aspx"&gt;Earlier I had discussed the setup of the client certificate with IIS and AD for authentication mapping etc&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here I will discuss the troubleshooting strategies on client certificate related errors that are listed above.&lt;/p&gt;
&lt;p&gt;To understand how Client certificate is used while accessing a resource on the server, you may prefer to look at this&amp;nbsp;brief but&amp;nbsp;quite explanatory&amp;nbsp;KB by David Dietz&amp;nbsp;from IIS support.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://support.microsoft.com/kb/907274/en-us" title="http://support.microsoft.com/kb/907274/en-us" mce_href="http://support.microsoft.com/kb/907274/en-us"&gt;http://support.microsoft.com/kb/907274/en-us&lt;/a&gt;&lt;/p&gt;
&lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So here we go...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1) 403.7&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;We see that 403.7 can be thrown by IIS when Client certificate is required and the browser is not sending the client certificate details to the web server (IIS). Either the client did not send the certificate for some reason or else the client did not have a certificate issued by a CA that was also trusted by IIS server. If the client sends a certificate which is not mutually trusted by both client and the server you may see this error.&lt;/p&gt;
&lt;p&gt;You may get a meaningful error like this in the browser:&lt;/p&gt;
&lt;p&gt;&lt;font color="#ff0000"&gt;HTTP Error 403 403.7 Forbidden: &lt;/font&gt;&lt;a&gt;&lt;font color="#ff0000"&gt;Client&lt;/font&gt;&lt;/a&gt;&lt;font color="#ff0000"&gt; &lt;/font&gt;&lt;a&gt;&lt;font color="#ff0000"&gt;certificate&lt;/font&gt;&lt;/a&gt;&lt;font color="#ff0000"&gt; required &lt;br&gt;This error occurs when the resource you are attempting to access requires your browser to have a &lt;/font&gt;&lt;a&gt;&lt;font color="#ff0000"&gt;client&lt;/font&gt;&lt;/a&gt;&lt;font color="#ff0000"&gt; Secure Sockets Layer (SSL) &lt;/font&gt;&lt;a&gt;&lt;font color="#ff0000"&gt;certificate&lt;/font&gt;&lt;/a&gt;&lt;font color="#ff0000"&gt; that the server recognizes. This is used for authenticating you as a valid user of the resource. &lt;br&gt;Please contact the Web server's administrator to obtain a valid &lt;/font&gt;&lt;a&gt;&lt;font color="#ff0000"&gt;client&lt;/font&gt;&lt;/a&gt;&lt;font color="#ff0000"&gt; &lt;/font&gt;&lt;a&gt;&lt;font color="#ff0000"&gt;certificate&lt;/font&gt;&lt;/a&gt;&lt;font color="#ff0000"&gt;.&lt;/font&gt; &lt;/p&gt;
&lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To start with, follow this KB &lt;a href="http://support.microsoft.com/kb/332077/en-us" title="http://support.microsoft.com/kb/332077/en-us" mce_href="http://support.microsoft.com/kb/332077/en-us"&gt;http://support.microsoft.com/kb/332077/en-us&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You need to make sure that the client certificate is issued by a CA which is in the trusted root CA store on both the server and the client machine. Confirm whether the trusted root CA is part of CTL. The reason being that if your certificate's CA is not in the CTL; although present in the trusted root CA store in the server machine, you may still see the error.&lt;/li&gt;&lt;/ul&gt;
&lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A CTL is a list of trusted certification authorities (CAs) that can be used for client authentication for a particular Web site . You can use CTLs to configure your Web server to accept certificates from a specific list of CAs, and automatically verify client certificates against this list. Only users with a client certificate that is issued by a CA in the CTL can gain access to the server. &lt;br&gt;Each Web site on your server can be configured to accept certificates from a different CTL. You may want to do this if you need a different list of trusted CAs for each Web site. 
&lt;/p&gt;&lt;p&gt;If CTL is present, this is the&amp;nbsp;list which is actually used to check for CA's which can issue client certificate to a user. If it is disabled then root CA store will be used for the above. Also make sure that the certificate is a valid client certificate. Make sure it is intended for user authentication.&lt;/p&gt;
&lt;p&gt;Check the certificate for "Ensures the identity of a remote computer" and Enhanced Key usage says &lt;a&gt;Client&lt;/a&gt; Authentication.&lt;/p&gt;
&lt;p&gt;Also Using &amp;gt;Certutil -verify -urlfetch should show:&lt;/p&gt;
&lt;p&gt;Verified Application Policies:&lt;br&gt;1.3.6.1.5.5.7.3.2 Client Authentication&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You may also see 403.7 due to an update to the trusted Root CA list. This creates a list that&amp;nbsp;is too large based on the size limit we enforce, the result being truncation of the list when this is sent to the &lt;a&gt;client&lt;/a&gt; during the &lt;a&gt;client&lt;/a&gt;&amp;nbsp;&lt;a&gt;certificate&lt;/a&gt; handshake. The limit is based on data size not CA count so there is no way to say this happens at a certain count of trusted CA’s.&lt;br&gt;To resolve this we need to delete some of the expired and unused/unknown trusted root certificates from the Trusted Root Certification Authorities list until it is working again.&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The problem can also be identified when the following entry is logged on the Web server. It is quite explanatory in itself.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;font color="#ff0000"&gt;Event Type: Warning&lt;br&gt;Event Source: Schannel&lt;br&gt;Event Category: None&lt;br&gt;Event ID: 36885&lt;br&gt;Date: 2/9/2007&lt;br&gt;Time: 9:32:44 AM&lt;br&gt;User: N/A&lt;br&gt;Computer: USMASVGDOIM259&lt;br&gt;Description:&lt;br&gt;When asking for &lt;/font&gt;&lt;a&gt;&lt;font color="#ff0000"&gt;client&lt;/font&gt;&lt;/a&gt;&lt;font color="#ff0000"&gt; authentication, this server sends a list of trusted &lt;br&gt;&lt;/font&gt;&lt;a&gt;&lt;font color="#ff0000"&gt;certificate&lt;/font&gt;&lt;/a&gt;&lt;font color="#ff0000"&gt; authorities to the &lt;/font&gt;&lt;a&gt;&lt;font color="#ff0000"&gt;client&lt;/font&gt;&lt;/a&gt;&lt;font color="#ff0000"&gt;. The &lt;/font&gt;&lt;a&gt;&lt;font color="#ff0000"&gt;client&lt;/font&gt;&lt;/a&gt;&lt;font color="#ff0000"&gt; uses this list to choose a &lt;/font&gt;&lt;a&gt;&lt;font color="#ff0000"&gt;client&lt;/font&gt;&lt;/a&gt;&lt;br&gt;&lt;a&gt;&lt;font color="#ff0000"&gt;certificate&lt;/font&gt;&lt;/a&gt;&lt;font color="#ff0000"&gt; that is trusted by the server. Currently, this server trusts so many &lt;br&gt;&lt;/font&gt;&lt;a&gt;&lt;font color="#ff0000"&gt;certificate&lt;/font&gt;&lt;/a&gt;&lt;font color="#ff0000"&gt; authorities that the list has grown too long. This list has thus been &lt;br&gt;truncated. The administrator of this machine should review the &lt;/font&gt;&lt;a&gt;&lt;font color="#ff0000"&gt;certificate&lt;/font&gt;&lt;/a&gt;&lt;br&gt;&lt;font color="#ff0000"&gt;authorities trusted for &lt;/font&gt;&lt;a&gt;&lt;font color="#ff0000"&gt;client&lt;/font&gt;&lt;/a&gt;&lt;font color="#ff0000"&gt; authentication and remove those that do not really &lt;br&gt;need to be trusted.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Related articles:&lt;/p&gt;
&lt;p&gt;Trusted root certificates that are required by Windows Server 2003, by Windows XP, &lt;br&gt;and by Windows 2000&lt;br&gt;&lt;a href="http://support.microsoft.com/kb/293781" mce_href="http://support.microsoft.com/kb/293781"&gt;http://support.microsoft.com/kb/293781&lt;/a&gt;&lt;br&gt;931125 Microsoft root &lt;a&gt;certificate&lt;/a&gt; program members (January 2007)&lt;br&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;931125" mce_href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;931125"&gt;http://support.microsoft.com/default.aspx?scid=kb;EN-US;931125&lt;/a&gt;&lt;/p&gt;
&lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2) 403.13&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The error you may see in the browser will be as shown below:&lt;/p&gt;
&lt;p&gt;&lt;font color="#ff0000"&gt;HTTP 403.13 Forbidden: Client certificate revoked &lt;br&gt;The page requires a valid client certificate &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;For an understanding of this error message check KB 248058.&lt;/p&gt;
&lt;p&gt;This error message means that the client sent a certificate, but either the certificate shows up as revoked in the issuing authority's Certificate Revocation List or the server could not retrieve a CRL from the issuing authority.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You need to crosscheck whether the client certificate is revoked or not with the respective CA. 
&lt;/li&gt;&lt;li&gt;If CA&amp;nbsp;confirms the certificate as valid and not revoked then the issue could be with IIS being unable to retrieve CRL from the CA.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;IIS , by default retrieves a CRL whenever it receives a client cert to make sure that cert is not revoked as long as local cache&amp;nbsp;is expired. For this it contacts the CA to get the CRL which is a list of revoked certificates and compares the list with the presented client cert. If for any reason it cannot retrieve the CRL, it will go ahead and throw error message as 403.13 even if cert is valid and not revoked.&amp;nbsp; This can happen in cases where some Proxy/firewall may block access to CDP to get the CRLs.&lt;/p&gt;
&lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If a CDP extension is present in a certificate that is part of the certification path, &lt;a&gt;IIS&lt;/a&gt; must be able to download at least one of the CRLs. If &lt;a&gt;IIS&lt;/a&gt; is unable to resolve the CRL, it returns the HTTP 403.13 error. In this case, we cannot access the above CDP so we fail. Prior to MS04-011 Win2k did not limit validation based on this. However, we now require that the CDP be reachable when validating a certificate chain.&lt;br&gt;To work around this we must either use a reachable CDP in the client certificate or disable CertCheckMode on the &lt;a&gt;IIS&lt;/a&gt; server, thus preventing it from doing any revocation checking.&lt;/p&gt;
&lt;p&gt;So, if we are getting Client certificate revoked errors, then check to see if the server can get to the CRL distribution point specified in the client certificate and if it can and is still giving this error, then download the Root and Subordinate CA CRLs and install&amp;nbsp;them on the IIS server so that it can get to it locally. 
&lt;/p&gt;&lt;p&gt;Also there is a metabase key in IIS called certcheckmode, which if disabled will stop IIS from trying to retrieve CRL&amp;nbsp;checking. In such a case client cert will be accepted even if the cert is revoked. Disabling CRL checking is a quick way to test the cause. &lt;/p&gt;
&lt;p&gt;The CertCheckMode property enables or disables Certificate Revocation List (CRL) checking. When CertCheckMode is set to a value greater than 0 (CertCheckMode&amp;gt;0), the CRL does not search for certificates that have been revoked. When CertCheckMode is equal to 0 (CertCheckMode=0), the CRL searches for certificates that have been revoked. 
&lt;/p&gt;&lt;p&gt;With CertCheckMode disabled, &lt;a&gt;IIS&lt;/a&gt; will no longer try to verify revocation of incoming client certificate requests. The client certificates will still need to be within their valid dates and still must be trusted by the &lt;a&gt;IIS&lt;/a&gt; server (the &lt;a&gt;IIS&lt;/a&gt;&amp;nbsp;server must trust the issuing CA). 
&lt;/p&gt;&lt;p&gt;We disable the Certcheckmode key by setting it to 1.&lt;/p&gt;
&lt;p&gt;&amp;gt;&lt;b&gt;C:\Inetpub\Adminscript\cscript.exe adsutil.vbs Set W3SVC&lt;/b&gt;&lt;a&gt;&lt;b&gt;&lt;font color="#000000"&gt;/&amp;lt;Website identifier&amp;gt;/CertCheckMode&lt;/font&gt;&lt;/b&gt;&lt;/a&gt;&lt;b&gt; 1&lt;/b&gt;&amp;nbsp; 
&lt;/p&gt;&lt;p&gt;I had seen an interesting case where 2 of the websites were accepting the same client cert whereas another one was not accepting it on the same web server. 
&lt;/p&gt;&lt;p&gt;Checking the metabase.xml for the server showed this: 
&lt;/p&gt;&lt;p&gt;Non-Working site: 
&lt;/p&gt;&lt;p&gt;================= 
&lt;/p&gt;&lt;p&gt;&amp;lt;IIsWebServer Location ="/LM/W3SVC/690402" 
&lt;/p&gt;&lt;p&gt;AuthFlags="0" 
&lt;/p&gt;&lt;p&gt;LogPluginClsid="{FF160663-DE82-11CF-BC0A-00AA006111E0}" 
&lt;/p&gt;&lt;p&gt;SSLCertHash="8bcfc28e346bb9ec49374d87479021354349cf85" 
&lt;/p&gt;&lt;p&gt;SSLStoreName="MY" 
&lt;/p&gt;&lt;p&gt;SecureBindings="XX.XX.XX.X:443:" 
&lt;/p&gt;&lt;p&gt;ServerAutoStart="TRUE" 
&lt;/p&gt;&lt;p&gt;ServerBindings="XX.XX.XX.X:80:" 
&lt;/p&gt;&lt;p&gt;ServerComment="CDB" 
&lt;/p&gt;&lt;p&gt;&amp;gt; 
&lt;/p&gt;&lt;p&gt;&amp;lt;/IIsWebServer&amp;gt; 
&lt;/p&gt;&lt;p&gt;Working Site: 
&lt;/p&gt;&lt;p&gt;============= 
&lt;/p&gt;&lt;p&gt;&amp;lt;IIsWebServer Location ="/LM/W3SVC/90326589" 
&lt;/p&gt;&lt;p&gt;AuthFlags="0" 
&lt;/p&gt;&lt;p&gt;&lt;b&gt;CertCheckMode="1"&lt;/b&gt; 
&lt;/p&gt;&lt;p&gt;LogPluginClsid="{FF160663-DE82-11CF-BC0A-00AA006111E0}" 
&lt;/p&gt;&lt;p&gt;SSLCertHash="a640634e38ff20ebd8c29c32aae635e5575e57f6" 
&lt;/p&gt;&lt;p&gt;SSLStoreName="MY" 
&lt;/p&gt;&lt;p&gt;SecureBindings="XX.XX.XX.Y:443:"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;/p&gt;&lt;p&gt;ServerAutoStart="TRUE" 
&lt;/p&gt;&lt;p&gt;ServerBindings="XX.XX.XX.Y:80:wcdb" 
&lt;/p&gt;&lt;p&gt;ServerComment="WCDB" 
&lt;/p&gt;&lt;p&gt;&amp;gt; 
&lt;/p&gt;&lt;p&gt;&amp;lt;/IIsWebServer&amp;gt; 
&lt;/p&gt;&lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Look at the difference between them. You see CertCheckMode is absent in the Non-working site, and absence of this key is equivalent to it being enabled. So once we put the CertCheckMode set to "1" for non-working site we should be able to resolve the issue. But this means that CRL chekcing is disabled. You may downlaod the CRL on to the server or else open up the relevant ports in order to allow CRL to be retrieved. 
&lt;/p&gt;&lt;p&gt;Check the KB 294305. 
&lt;/p&gt;&lt;p&gt;You may also check KB 841632 if IIS 5.0 is in picture. 
&lt;/p&gt;&lt;p&gt;There was an interesting case, where users were getting 403.13 even when client cert was not revoked and&amp;nbsp;we were able to access the get the CRL from the CDP for the client cert by accessing it through&amp;nbsp;a browser. Yet after a lot of tracing and monitoring we found that there was a 4-level hierarchy in the certificate chain, with let's say Root CA1 -&amp;gt;Subordinate Root CA2-&amp;gt;Subordinate Root CA3 -&amp;gt; Client certificate and one of the subordinate root CA's crl was not accessible. There are tools like certutil or SSLspy that can come handy. We ran certutil.exe -verify -urlfetch &amp;lt;location of the client cert.cer&amp;gt; on the IIS server and found that&amp;nbsp;CRL retrieval for&amp;nbsp;Subordinate&amp;nbsp;Root CA2 was failing, and hence the issue. 
&lt;/p&gt;&lt;p&gt;&lt;b&gt;So remember that we need to make sure that the CDPs for all the subordinate CAs certifcates in the chain should also be reachable.&lt;/b&gt; 
&lt;/p&gt;&lt;p&gt;Let's say for&amp;nbsp;my client certificate, the Certification path shows: 
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Microsoft Corporate Root CA&lt;/b&gt; 
&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;|--&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Microsoft Corp Enterprise CA 2&lt;/b&gt; 
&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|--&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Saurabh Singh&lt;/b&gt; 
&lt;/p&gt;&lt;p&gt;Here&amp;nbsp;is the information for certificate "&lt;i&gt;&lt;b&gt;Saurabh singh&lt;/b&gt;&lt;/i&gt;" 
&lt;/p&gt;&lt;p&gt;CRL Distribution Points (Under Details-&amp;gt;Field)&amp;nbsp;shows: 
&lt;/p&gt;&lt;p&gt;[1]CRL Distribution Point&lt;br&gt;Distribution Point Name:&lt;br&gt;Full Name:&lt;br&gt;URL=ldap:///CN=Microsoft%20Corp%20Enterprise%20CA%202(4),CN=CRL,CN=CDP,CN=Public%20Key%20Services,CN=Services,CN=Configuration,DC=corp,DC=microsoft,DC=com?certificateRevocationList?base?objectClass=cRLDistributionPoint&lt;br&gt;URL=&lt;a href="http://corppki/crl/Microsoft%20Corp%20Enterprise%20CA%202%284%29.crl" mce_href="http://corppki/crl/Microsoft%20Corp%20Enterprise%20CA%202(4).crl"&gt;http://corppki/crl/Microsoft%20Corp%20Enterprise%20CA%202(4).crl&lt;/a&gt;&lt;br&gt;URL=&lt;a href="http://crl.microsoft.com/pki/mscorp/crl/Microsoft%20Corp%20Enterprise%20CA%202%284%29.crl" mce_href="http://crl.microsoft.com/pki/mscorp/crl/Microsoft%20Corp%20Enterprise%20CA%202(4).crl"&gt;http://crl.microsoft.com/pki/mscorp/crl/Microsoft%20Corp%20Enterprise%20CA%202(4).crl&lt;/a&gt; 
&lt;/p&gt;&lt;p&gt;Authority Information Access shows: 
&lt;/p&gt;&lt;p&gt;[1]Authority Info Access&lt;br&gt;Access Method=Certification Authority Issuer (1.3.6.1.5.5.7.48.2)&lt;br&gt;Alternative Name:&lt;br&gt;URL=&lt;a href="http://corppki/aia/Microsoft%20Corp%20Enterprise%20CA%202%284%29.crt" mce_href="http://corppki/aia/Microsoft%20Corp%20Enterprise%20CA%202(4).crt"&gt;http://corppki/aia/Microsoft%20Corp%20Enterprise%20CA%202(4).crt&lt;/a&gt;&lt;br&gt;[2]Authority Info Access&lt;br&gt;Access Method=Certification Authority Issuer (1.3.6.1.5.5.7.48.2)&lt;br&gt;Alternative Name:&lt;br&gt;URL=&lt;a href="http://www.microsoft.com/pki/mscorp/Microsoft%20Corp%20Enterprise%20CA%202%284%29.crt" mce_href="http://www.microsoft.com/pki/mscorp/Microsoft%20Corp%20Enterprise%20CA%202(4).crt"&gt;http://www.microsoft.com/pki/mscorp/Microsoft%20Corp%20Enterprise%20CA%202(4).crt&lt;/a&gt; 
&lt;/p&gt;&lt;p&gt;Here&amp;nbsp;is the information for certificate&amp;nbsp; "&lt;i&gt;&lt;b&gt;Microsoft Corp Enterprise CA 2&lt;/b&gt;&lt;/i&gt;": 
&lt;/p&gt;&lt;p&gt;CRL Distribution Points (Under Details-&amp;gt;Field)&amp;nbsp;shows: 
&lt;/p&gt;&lt;p&gt;[1]CRL Distribution Point&lt;br&gt;Distribution Point Name:&lt;br&gt;Full Name:&lt;br&gt;URL=&lt;a href="http://corppki/crl/mscrca.crl" mce_href="http://corppki/crl/mscrca.crl"&gt;http://corppki/crl/mscrca.crl&lt;/a&gt;&lt;br&gt;URL=&lt;a href="http://crl.microsoft.com/pki/mscorp/crl/mscrca.crl" mce_href="http://crl.microsoft.com/pki/mscorp/crl/mscrca.crl"&gt;http://crl.microsoft.com/pki/mscorp/crl/mscrca.crl&lt;/a&gt; 
&lt;/p&gt;&lt;p&gt;Authority Information Access shows: 
&lt;/p&gt;&lt;p&gt;[1]Authority Info Access&lt;br&gt;Access Method=Certification Authority Issuer (1.3.6.1.5.5.7.48.2)&lt;br&gt;Alternative Name:&lt;br&gt;URL=&lt;a href="http://corppki/aia/mscrca.crt" mce_href="http://corppki/aia/mscrca.crt"&gt;http://corppki/aia/mscrca.crt&lt;/a&gt;&lt;br&gt;[2]Authority Info Access&lt;br&gt;Access Method=Certification Authority Issuer (1.3.6.1.5.5.7.48.2)&lt;br&gt;Alternative Name:&lt;br&gt;URL=&lt;a href="http://www.microsoft.com/pki/mscorp/mscrca.crt" mce_href="http://www.microsoft.com/pki/mscorp/mscrca.crt"&gt;http://www.microsoft.com/pki/mscorp/mscrca.crt&lt;/a&gt; 
&lt;/p&gt;&lt;p&gt;Now runnning the Certutil.exe as shown below: 
&lt;/p&gt;&lt;p&gt;cmd prompt&amp;gt; certutil.exe -verify -urlfetch &lt;b&gt;cert.cer&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;-------the client certificate 
&lt;/p&gt;&lt;p&gt;Here is the output: 
&lt;/p&gt;&lt;p&gt;&lt;font color="#8000ff"&gt;Issuer:&lt;br&gt;CN=Microsoft Corp Enterprise CA 2&lt;br&gt;Subject:&lt;br&gt;CN=Saurabh Singh&lt;br&gt;Cert Serial Number: 258a555c0004008b1c42 &lt;/font&gt;
&lt;/p&gt;&lt;p&gt;&lt;font color="#8000ff"&gt;dwFlags = CA_VERIFY_FLAGS_DUMP_CHAIN (0x40000000)&lt;br&gt;ChainFlags = CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT (0x40000000)&lt;br&gt;HCCE_LOCAL_MACHINE&lt;br&gt;CERT_CHAIN_POLICY_BASE&lt;br&gt;-------- CERT_CHAIN_CONTEXT --------&lt;br&gt;ChainContext.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)&lt;br&gt;ChainContext.dwRevocationFreshnessTime: 176 Days, 6 Hours, 5 Minutes, 17 Seconds &lt;/font&gt;
&lt;/p&gt;&lt;p&gt;&lt;font color="#8000ff"&gt;SimpleChain.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)&lt;br&gt;SimpleChain.dwRevocationFreshnessTime: 176 Days, 6 Hours, 5 Minutes, 17 Seconds &lt;/font&gt;
&lt;/p&gt;&lt;p&gt;&lt;font color="#8000ff"&gt;CertContext[0][0]: dwInfoStatus=102 dwErrorStatus=0&lt;br&gt;Issuer: CN=Microsoft Corp Enterprise CA 2&lt;br&gt;Subject: CN=Saurabh Singh&lt;br&gt;Serial: 258a555c0004008b1c42&lt;br&gt;Template: AutoEnrolled Client Auth&lt;br&gt;48 b7 48 da 00 51 21 77 b3 e1 3a ce 98 7d 35 2f b7 e8 0c 1c&lt;br&gt;Element.dwInfoStatus = CERT_TRUST_HAS_KEY_MATCH_ISSUER (0x2)&lt;br&gt;Element.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)&lt;br&gt;---------------- Certificate AIA ----------------&lt;br&gt;Verified "Certificate (0)" Time: 1&lt;br&gt;[0.0] &lt;/font&gt;&lt;a href="http://corppki/aia/Microsoft%20Corp%20Enterprise%20CA%202%284%29.crt" mce_href="http://corppki/aia/Microsoft%20Corp%20Enterprise%20CA%202(4).crt"&gt;&lt;font color="#8000ff"&gt;http://corppki/aia/Microsoft%20Corp%20Enterprise%20CA%202(4).crt&lt;/font&gt;&lt;/a&gt; 
&lt;/p&gt;&lt;p&gt;&lt;font color="#8000ff"&gt;Verified "Certificate (0)" Time: 1&lt;br&gt;[1.0] &lt;/font&gt;&lt;a href="http://www.microsoft.com/pki/mscorp/Microsoft%20Corp%20Enterprise%20CA%202%284%29.crt" mce_href="http://www.microsoft.com/pki/mscorp/Microsoft%20Corp%20Enterprise%20CA%202(4).crt"&gt;&lt;font color="#8000ff"&gt;http://www.microsoft.com/pki/mscorp/Microsoft%20Corp%20Enterprise%20CA%202(4).crt&lt;/font&gt;&lt;/a&gt; 
&lt;/p&gt;&lt;p&gt;&lt;font color="#8000ff"&gt;---------------- Certificate CDP ----------------&lt;br&gt;Verified "Base CRL (821)" Time: 0&lt;br&gt;[0.0] ldap:///CN=Microsoft%20Corp%20Enterprise%20CA%202(4),CN=CRL,CN=CDP,CN=Public%20Key%20Services,CN=Services,CN=Configuration,DC=corp,DC=microsoft,DC=com?certificateRevocationList?base?objectClass=cRLDistributionPoint &lt;/font&gt;
&lt;/p&gt;&lt;p&gt;&lt;font color="#8000ff"&gt;Verified "Base CRL (821)" Time: 0&lt;br&gt;[1.0] &lt;/font&gt;&lt;a href="http://corppki/crl/Microsoft%20Corp%20Enterprise%20CA%202%284%29.crl" mce_href="http://corppki/crl/Microsoft%20Corp%20Enterprise%20CA%202(4).crl"&gt;&lt;font color="#8000ff"&gt;http://corppki/crl/Microsoft%20Corp%20Enterprise%20CA%202(4).crl&lt;/font&gt;&lt;/a&gt; 
&lt;/p&gt;&lt;p&gt;&lt;font color="#8000ff"&gt;Verified "Base CRL (821)" Time: 1&lt;br&gt;[2.0] &lt;/font&gt;&lt;a href="http://crl.microsoft.com/pki/mscorp/crl/Microsoft%20Corp%20Enterprise%20CA%202%284%29.crl" mce_href="http://crl.microsoft.com/pki/mscorp/crl/Microsoft%20Corp%20Enterprise%20CA%202(4).crl"&gt;&lt;font color="#8000ff"&gt;http://crl.microsoft.com/pki/mscorp/crl/Microsoft%20Corp%20Enterprise%20CA%202(4).crl&lt;/font&gt;&lt;/a&gt; 
&lt;/p&gt;&lt;p&gt;&lt;font color="#8000ff"&gt;---------------- Base CRL CDP ----------------&lt;br&gt;No URLs "None" Time: 0&lt;br&gt;--------------------------------&lt;br&gt;CRL 821:&lt;br&gt;Issuer: CN=Microsoft Corp Enterprise CA 2&lt;br&gt;fd 19 3c 2f 0c 24 ea 1c 4a 5d df c4 26 2a b0 1b 98 48 ef 99&lt;br&gt;Application[0] = 1.3.6.1.5.5.7.3.2 Client Authentication &lt;/font&gt;
&lt;/p&gt;&lt;p&gt;&lt;font color="#8000ff"&gt;CertContext[0][1]: dwInfoStatus=102 dwErrorStatus=0&lt;br&gt;Issuer: CN=Microsoft Corporate Root CA, O=Microsoft Corporation&lt;br&gt;Subject: CN=Microsoft Corp Enterprise CA 2&lt;br&gt;Serial: 610d1de0000000000019&lt;br&gt;Template: SubCA&lt;br&gt;17 0a 7b 9d 52 85 07 7e 74 1a f5 a0 6b db 05 78 9e bc f1 8d&lt;br&gt;Element.dwInfoStatus = CERT_TRUST_HAS_KEY_MATCH_ISSUER (0x2)&lt;br&gt;Element.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)&lt;br&gt;---------------- Certificate AIA ----------------&lt;br&gt;No CRL "Certificate (0)" Time: 0&lt;br&gt;[0.0] &lt;/font&gt;&lt;a href="http://corppki/aia/mscrca.crt" mce_href="http://corppki/aia/mscrca.crt"&gt;&lt;font color="#8000ff"&gt;http://corppki/aia/mscrca.crt&lt;/font&gt;&lt;/a&gt; 
&lt;/p&gt;&lt;p&gt;&lt;font color="#8000ff"&gt;No CRL "Certificate (0)" Time: 1&lt;br&gt;[1.0] &lt;/font&gt;&lt;a href="http://www.microsoft.com/pki/mscorp/mscrca.crt" mce_href="http://www.microsoft.com/pki/mscorp/mscrca.crt"&gt;&lt;font color="#8000ff"&gt;http://www.microsoft.com/pki/mscorp/mscrca.crt&lt;/font&gt;&lt;/a&gt; 
&lt;/p&gt;&lt;p&gt;&lt;font color="#8000ff"&gt;---------------- Certificate CDP ----------------&lt;br&gt;Verified "Base CRL (18)" Time: 0&lt;br&gt;[0.0] &lt;/font&gt;&lt;a href="http://corppki/crl/mscrca.crl" mce_href="http://corppki/crl/mscrca.crl"&gt;&lt;font color="#8000ff"&gt;http://corppki/crl/mscrca.crl&lt;/font&gt;&lt;/a&gt; 
&lt;/p&gt;&lt;p&gt;&lt;font color="#8000ff"&gt;Verified "Base CRL (18)" Time: 0&lt;br&gt;[1.0] &lt;/font&gt;&lt;a href="http://crl.microsoft.com/pki/mscorp/crl/mscrca.crl" mce_href="http://crl.microsoft.com/pki/mscorp/crl/mscrca.crl"&gt;&lt;font color="#8000ff"&gt;http://crl.microsoft.com/pki/mscorp/crl/mscrca.crl&lt;/font&gt;&lt;/a&gt; 
&lt;/p&gt;&lt;p&gt;&lt;font color="#8000ff"&gt;---------------- Base CRL CDP ----------------&lt;br&gt;No URLs "None" Time: 0&lt;br&gt;--------------------------------&lt;br&gt;CRL 18:&lt;br&gt;Issuer: CN=Microsoft Corporate Root CA, O=Microsoft Corporation&lt;br&gt;0e 70 65 69 a7 4c f9 7d 9f 50 7b db 9c e1 b8 27 9e 53 ba f4 &lt;/font&gt;
&lt;/p&gt;&lt;p&gt;&lt;font color="#8000ff"&gt;CertContext[0][2]: dwInfoStatus=10c dwErrorStatus=0&lt;br&gt;Issuer: CN=Microsoft Corporate Root CA, O=Microsoft Corporation&lt;br&gt;Subject: CN=Microsoft Corporate Root CA, O=Microsoft Corporation&lt;br&gt;Serial: 443c2a54b59cd69d4c09b18a9b02eb55&lt;br&gt;d2 d3 8e ba 60 ca a1 c1 20 55 a2 e1 c8 3b 15 ad 45 01 10 c2&lt;br&gt;Element.dwInfoStatus = CERT_TRUST_HAS_NAME_MATCH_ISSUER (0x4)&lt;br&gt;Element.dwInfoStatus = CERT_TRUST_IS_SELF_SIGNED (0x8)&lt;br&gt;Element.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)&lt;br&gt;---------------- Certificate AIA ----------------&lt;br&gt;No URLs "None" Time: 0&lt;br&gt;---------------- Certificate CDP ----------------&lt;br&gt;No URLs "None" Time: 0&lt;br&gt;-------------------------------- &lt;/font&gt;
&lt;/p&gt;&lt;p&gt;&lt;font color="#8000ff"&gt;Exclude leaf cert:&lt;br&gt;8a cf e9 23 e2 d7 cd d1 f0 bb 05 6e 63 b5 31 95 6e 46 0d ad&lt;br&gt;Full chain:&lt;br&gt;5b fa 04 32 34 21 49 11 92 56 b3 ee 41 94 b4 b8 f3 f6 44 f2&lt;br&gt;------------------------------------&lt;br&gt;Verified Issuance Policies: None&lt;br&gt;Verified Application Policies:&lt;br&gt;1.3.6.1.5.5.7.3.2 Client Authentication&lt;br&gt;Leaf certificate revocation check passed&lt;br&gt;CertUtil: -verify command completed successfully.&lt;/font&gt; 
&lt;/p&gt;&lt;p&gt;If you notice the Certutil.exe tries to check the CRL accessibility by accessing the CRL Distribution points.&amp;nbsp;The above command ouptput should give you an idea regarding the cause. You&amp;nbsp;may see an error in accessing the CRL in the output above in cases where you get the above errors. 
&lt;/p&gt;&lt;p&gt;Here is something similar when you get an error: 
&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;----------------&amp;nbsp; Certificate CDP&amp;nbsp; ----------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&amp;nbsp; Failed "CDP" Time: 0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Error retrieving URL: The specified network resource or device is no longer available. 0x80070037 (WIN32: 55)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldap:///CN=CRL1, CN=xxxx, OU=xxxx, OU=xxxx. by ref. (limits liab.), O=xxxx, C=US?certificateRevocationList;binary,authorityRevocationList;binary,deltaRevocationList;binary&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&amp;nbsp; Failed "CDP" Time: 0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Error retrieving URL: The server name or address could not be resolved 0x80072ee7 (WIN32: 12007)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.some_company.net/CRL/net1.crl"&gt;&lt;font color="#0000ff"&gt;http://www.some_company.net/CRL/net1.crl&lt;/font&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&amp;nbsp; --------------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&amp;nbsp; Application[0] = 1.3.6.1.5.5.7.3.4 Secure Email&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&amp;nbsp; Application[1] = 1.3.6.1.5.5.7.3.1 Server Authentication&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&amp;nbsp; Application[2] = 1.3.6.1.5.5.7.3.2 Client Authentication&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&amp;nbsp; Application[3] = 1.3.6.1.5.5.7.3.3 Code Signing&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;Exclude leaf cert:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&amp;nbsp; 14 4c 46 42 11 66 a4 a9 42 70 ad b6 e0 1e 23 ca d4 9b 24 0e&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;Full chain:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&amp;nbsp; fe 37 4a cf 76 3e 01 14 21 a6 c7 25 35 14 97 e5 91 87 e3 b7&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&amp;nbsp; Issuer: CN=A company, OU=&lt;st1:place w:st="on"&gt;&lt;st1:City w:st="on"&gt;PKI&lt;/st1:City&gt;, &lt;st1:State w:st="on"&gt;DC&lt;/st1:State&gt;&lt;/st1:place&gt;=company, DC=com&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&amp;nbsp; Subject: OID.0.9.2342.19200300.100.1.1=ZALDI001, OU=People, OU=SAP, DC=company, DC=com&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&amp;nbsp; Serial: 42c550de&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&amp;nbsp; 6e 33 5f 13 e1 67 ad 41 71 02 96 17 c7 57 c9 91 ea cb 1d 24&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;The revocation function was unable to check revocation because the revocation server was offline. 0x80092013 (-2146885613)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;------------------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;Revocation check skipped -- server offline&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;Cert is an End Entity certificate&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;ERROR: Verifying leaf certificate revocation status returned The revocation function was unable to check revocation because the revocation server was offline. 0x80092013 (-2146885613)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;CertUtil: The revocation function was unable to check revocation because the revocation server was offline.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Ensure that &lt;span style="font-size: 10pt; font-family: 'Arial','sans-serif';"&gt;the necessary firewall/network configuration changes to allow the IIS server to access ALL of the external CDP’s listed in the client cert’s revocation chain, or&amp;nbsp;d&lt;span style="font-size: 10pt; font-family: 'Arial','sans-serif';"&gt;ownload the CRL(s) to the IIS server manually and set CertCheckMode to MD_CERT_CACHE_RETRIEVAL_ONLY (see this link &lt;a href="http://technet2.microsoft.com/windowsserver/en/library/173427fd-eb90-44ef-8a9c-d7bb4ff41ab81033.mspx?mfr=true"&gt;http://technet2.microsoft.com/windowsserver/en/library/173427fd-eb90-44ef-8a9c-d7bb4ff41ab81033.mspx?mfr=true&lt;/a&gt; ).&amp;nbsp; That will tell IIS to look at the CRL in its local store and not try to attempt to access the CRL via the CDP entries specified in the client cert.&amp;nbsp; &lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;&lt;p&gt;One more confusing point that should be clarified here: 
&lt;/p&gt;&lt;p&gt;&lt;i&gt;&lt;b&gt;If you have a certificate chain, let's say: Root CA -&amp;gt; Intermediate CA1 -&amp;gt; Intermediate CA2 -&amp;gt;..... -&amp;gt;&amp;lt;Your Client ceritficate&amp;gt;, then CRL checking will be done for all the Certificates in the hierarchy&amp;nbsp;except the Root CA.&lt;/b&gt;&lt;/i&gt; 
&lt;/p&gt;&lt;p&gt;If you are really interested to dig further as to how Certificate Revocation etc. works at a lower level, here is a real exhaustive link to check it out.&amp;nbsp; 
&lt;/p&gt;&lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/library/af1e419e-ede5-8c4b-bf6e-1fb17658a99d.aspx" title="http://technet.microsoft.com/en-us/library/af1e419e-ede5-8c4b-bf6e-1fb17658a99d.aspx" mce_href="http://technet.microsoft.com/en-us/library/af1e419e-ede5-8c4b-bf6e-1fb17658a99d.aspx"&gt;http://technet.microsoft.com/en-us/library/af1e419e-ede5-8c4b-bf6e-1fb17658a99d.aspx&lt;/a&gt; 
&lt;/p&gt;&lt;h3&gt;&lt;b&gt;&lt;u&gt;Another issue that pops up from time to time is:&amp;nbsp;&lt;/u&gt;&lt;/b&gt; &lt;/h3&gt;
&lt;p&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;&lt;i&gt;&lt;b&gt;"Choose a digital certificate"&lt;/b&gt;&lt;/i&gt; popup window in Internet Explorer is blank when attempting to use client certificates to authenticate against IIS. 
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;This can happen in situations as explained earlier too in cases where: &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The total size of the certificates in the Trusted Root Certification Authorities store on the IIS server was too large to send to the client. The list was truncated as a result. &lt;/p&gt;
&lt;p&gt;The following event was written to the System log:&lt;br&gt;&lt;font color="#ff0000"&gt;Event Type: Warning &lt;br&gt;Event Source: Schannel &lt;br&gt;Event ID: 36885 &lt;br&gt;Description: When asking for client authentication, this server sends a list of trusted certificate authorities to the client. The client uses this list to choose a client certificate that is trusted by the server. Currently, this server trusts so many certificate authorities that the list has grown too long. This list has thus been truncated. The administrator of this machine should review the certificate authorities trusted for client authentication and remove those that do not really need to be trusted.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#ff0000"&gt;Resolution would be to Remove unused certificates from the Trusted Root Certification Authorities store on the IIS server, reducing the number of certificates.&amp;nbsp;&lt;/font&gt; 
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Also another cause may be when the any of the Subordinate CAs-&amp;gt;certificate-&amp;gt;Details-&amp;gt;Edit Properties button has Client Authentication disabled in the intended purposes. &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Also this should be of help at times &lt;a href="http://support.microsoft.com/kb/285069/" title="http://support.microsoft.com/kb/285069/" mce_href="http://support.microsoft.com/kb/285069/"&gt;http://support.microsoft.com/kb/285069/&lt;/a&gt;&amp;nbsp; 
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Also if we have certificate trust list(CTL) enabled,&amp;nbsp;CTL that IIS sends&amp;nbsp;is what the client uses to know if it has a client cert it can use. 
&lt;/li&gt;&lt;li&gt;Also&amp;nbsp;there is a &amp;lt;12kb&amp;gt; limit on this and if the customer has applied the Trusted Root CA update, then we may not send the full list of trusted CA’s. Make sure that CA is in CTL as well as the size limit. You may want to revisit the article
&lt;a href="http://support.microsoft.com/kb/933430" title="KB" target="_blank" mce_href="http://support.microsoft.com/kb/933430"&gt;http://support.microsoft.com/kb/933430&lt;/a&gt;. Either install the hotfix if it
is applicable or try deleting/moving to other store some of the unused/junk CAs from
the Trusted Root Certificate Authority Store on the IIS server. That
could do the trick for you!&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Refer to one of our finest Escalation engineer&amp;nbsp;(Andreas&amp;nbsp;Klein)'s&amp;nbsp;blog which talks about limiting the list of CA's allowed for Client authentication, without&amp;nbsp;deleting the CAs from the store. 
&lt;/p&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/andrekl/archive/2005/04/19/409682.aspx" title="http://blogs.msdn.com/andrekl/archive/2005/04/19/409682.aspx" mce_href="http://blogs.msdn.com/andrekl/archive/2005/04/19/409682.aspx"&gt;http://blogs.msdn.com/andrekl/archive/2005/04/19/409682.aspx&lt;/a&gt; 
&lt;/p&gt;&lt;p&gt;Also while&amp;nbsp;you may&amp;nbsp;have the certificate in your personal store (using the mmc snap-in it shows up properly), you may not see it in the IE browser. If&amp;nbsp;you go through &lt;b&gt;Internet Options-&amp;gt;Content &lt;/b&gt;and click Certificates, it doesn’t show up at all. Open&amp;nbsp;the certificate MMC and check whether the cert has a Private key or not. 
&lt;/p&gt;&lt;p&gt;If the General tab on the cert properties does not say at the bottom that you have a Private Key corresponding to this cert then you don’t, and this may lead to the above problem.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;403.16 - Client certificate is untrusted or invalid. &lt;/b&gt;
&lt;/p&gt;&lt;p&gt;This error message is primarily generated when the certificate that the client provided is improperly formed. It can also be generated if there are intermediate certification authorities in the certificate chain that are not trusted by the Web server. 
&lt;/p&gt;&lt;p&gt;&lt;b&gt;403.17 - Client certificate has expired or is not yet valid &lt;/b&gt;
&lt;/p&gt;&lt;p&gt;This error message is fairly self-explanatory. It means that the current date on the server is not within the valid date ranges that are presented in the client certificate. You may also want to ensure that the client certificate and its issuing CAs (including Intermediate CAs) are not expired or invalid.&lt;br&gt; &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3185914" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/Client+Certificate/default.aspx">Client Certificate</category><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/Authentication/default.aspx">Authentication</category><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/SSL/default.aspx">SSL</category><category domain="http://blogs.msdn.com/saurabh_singh/archive/tags/Troubleshooting/default.aspx">Troubleshooting</category></item></channel></rss>