<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JasonSamuel.com &#187; IIS</title>
	<atom:link href="http://www.jasonsamuel.com/tag/iis/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jasonsamuel.com</link>
	<description>Cool stuff I see in the IT world</description>
	<lastBuildDate>Sat, 17 Jul 2010 21:35:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Getting around Netscaler Client IP issues without having to use USIP</title>
		<link>http://www.jasonsamuel.com/2010/07/16/getting-around-netscaler-client-ip-issues-without-having-to-use-usip/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=getting-around-netscaler-client-ip-issues-without-having-to-use-usip</link>
		<comments>http://www.jasonsamuel.com/2010/07/16/getting-around-netscaler-client-ip-issues-without-having-to-use-usip/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 21:58:01 +0000</pubDate>
		<dc:creator>Jason Samuel</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Citrix NetScaler]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[Citrix]]></category>
		<category><![CDATA[netscaler]]></category>

		<guid isPermaLink="false">http://www.jasonsamuel.com/?p=552</guid>
		<description><![CDATA[If you work with Netscalers, you already know how SNIPs and MIPs work. They are the IPs that communicate with your servers. Every packet from the outside world that passes through the Netscaler will hit your server as though it was coming from this IP. This is the default behavior on a Netscaler. Unfortunately if [...]<p><a href="http://www.jasonsamuel.com/2010/07/16/getting-around-netscaler-client-ip-issues-without-having-to-use-usip/">Getting around Netscaler Client IP issues without having to use USIP</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>



More of my posts you might like:<ol><li><a href='http://www.jasonsamuel.com/2010/07/09/how-to-monitor-realtime-traffic-stats-accurately-on-a-citrix-netscaler/' rel='bookmark' title='Permanent Link: How to monitor realtime traffic stats accurately on a Citrix Netscaler'>How to monitor realtime traffic stats accurately on a Citrix Netscaler</a></li>
<li><a href='http://www.jasonsamuel.com/2010/06/22/how-to-update-your-citrix-netscaler-firmware/' rel='bookmark' title='Permanent Link: How to update your Citrix Netscaler firmware'>How to update your Citrix Netscaler firmware</a></li>
<li><a href='http://www.jasonsamuel.com/2010/06/29/how-to-really-set-a-netscaler-back-to-factory-defaults-factory-new-condition/' rel='bookmark' title='Permanent Link: How to REALLY set a Netscaler back to factory defaults (factory new condition)'>How to REALLY set a Netscaler back to factory defaults (factory new condition)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>If you work with Netscalers, you already know how SNIPs and MIPs work.  They are the IPs that communicate with your servers.  Every packet from the outside world that passes through the Netscaler will hit your server as though it was coming from this IP.  This is the default behavior on a Netscaler.</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2010/07/citrix_netscaler_in_action.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2010/07/citrix_netscaler_in_action.jpg" alt="" title="citrix_netscaler_in_action" width="410" height="287" class="aligncenter size-full wp-image-572" /></a></p>
<p>Unfortunately if your servers require the client&#8217;s true IP address, all you will see for every client will be the SNIP or MIP address you are using.  Here are a few examples I have personally had to deal with:</p>
<p>- IIS requires client IP for IIS logs<br />
- IIS requires client IP for ACL filtering<br />
- Web application requires client IP for it&#8217;s own logging purposes<br />
- Web application requires cilent IP for authentication</p>
<p>Now to get around this for IIS, you can install ISAPI filters and set your Netscaler to use a custom header to store the true client IP address and pass that along with every packet.  The ISAPI filter in IIS would look for this particular header and log that instead of the SNIP/MIP.  There&#8217;s a very nice Client IP extraction ISAPI filter with some great instructions located on this page from Citrix or you can even write your own:</p>
<p><a href="http://support.citrix.com/article/CTX119347">http://support.citrix.com/article/CTX119347</a></p>
<p>This is great for logging but sometimes your web application may grab the IP address from web server variables.  To return the IP address of the host making the request, the server variable that your ASP, ASP.NET, and PHP code will call is &#8220;REMOTE_ADDR&#8221;.  Unfortunately REMOTE_ADR is going to have your SNIP IP and not the client IP when passing through the Netscaler.  The good news is that if you have control of your code, you can make it call from a different location that includes the client IP your ISAPI filter is passing.  So if your code currently uses:</p>
<blockquote><p>Request.ServerVariables(&#8220;REMOTE_ADDR&#8221;)</p></blockquote>
<p>then switch it to:</p>
<blockquote><p>Request.ServerVariables(&#8220;http_client_ip&#8221;)</p></blockquote>
<p>where &#8220;http_client_ip&#8221; is the real client IP address and not the SNIP.  Everything will work fine after that.</p>
<p>Here&#8217;s a nice snippet of code you can run on your web server and hit from your client browser to see what all the Netscaler is passing to the server:</p>
<blockquote><p>
&lt;html&gt;<br />
&lt;body&gt;<br />
&lt;p&gt;<br />
NS SNIP or MIP IP address:<br />
&lt;%Response.Write(Request.ServerVariables(&#8220;remote_addr&#8221;))%&gt;<br />
&lt;br&gt;<br />
&lt;b&gt;The NS Inserted Client IP:&lt;/b&gt;<br />
&lt;%Response.Write(Request.ServerVariables(&#8220;http_Client_ip&#8221;))%&gt;<br />
&lt;br&gt;<br />
Accept Encoding:<br />
&lt;%Response.Write(Request.ServerVariables(&#8220;HTTP_ACCEPT_ENCODING&#8221;))%&gt;<br />
&lt;br&gt;<br />
Cookies:<br />
&lt;%Response.Write(Request.ServerVariables(&#8220;HTTP_COOKIE&#8221;))%&gt;<br />
&lt;br&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;
</p></blockquote>
<p>(<strong>***Note</strong>, I apologize in advance if WordPress messes up the code block above.  It usually changes the quotes in the code around so if you have issues with it, I will host a .txt file here with the code.  Just comment to this post if you need it.)</p>
<p>This is all well and good when you have access to the code and can make this change but what about web apps that are 3rd party and you cannot modify the code?  Well then you have no choice but to use the USIP (Use Source IP) feature on the Netscaler.  What this does is pass the client IP straight through the Netscaler to your backend server so that the SNIP or MIP you are using on your Netscaler is never seen by the server (except for monitor probes from the Netscaler itself of course).  This option is disabled by default.  It can be applied to the entire Netscaler or turned on and off per service.</p>
<p>Best practice is not to use it and avoid it as much as possible.  The reason is that using the USIP feature means you are going to lose very important features on the Netscaler such as connection multiplexing and surge protection.  It&#8217;s always better to use the Client IP header insertion instead.  In fact to date I have personally never enabled USIP in any environment I have built so far.</p>
<p>Here&#8217;s a very excellent and recent article from Citrix on the pros and cons of using USIP mode:</p>
<p><a href="http://support.citrix.com/article/CTX121974">http://support.citrix.com/article/CTX121974</a></p>
<p>I hope this helps anyone trying to get around Client IP address related issues.  Please feel free to post a comment on your own experiences or suggestions.</p>
<p><a href="http://www.jasonsamuel.com/2010/07/16/getting-around-netscaler-client-ip-issues-without-having-to-use-usip/">Getting around Netscaler Client IP issues without having to use USIP</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>


<p>More of my posts you might like:<ol><li><a href='http://www.jasonsamuel.com/2010/07/09/how-to-monitor-realtime-traffic-stats-accurately-on-a-citrix-netscaler/' rel='bookmark' title='Permanent Link: How to monitor realtime traffic stats accurately on a Citrix Netscaler'>How to monitor realtime traffic stats accurately on a Citrix Netscaler</a></li>
<li><a href='http://www.jasonsamuel.com/2010/06/22/how-to-update-your-citrix-netscaler-firmware/' rel='bookmark' title='Permanent Link: How to update your Citrix Netscaler firmware'>How to update your Citrix Netscaler firmware</a></li>
<li><a href='http://www.jasonsamuel.com/2010/06/29/how-to-really-set-a-netscaler-back-to-factory-defaults-factory-new-condition/' rel='bookmark' title='Permanent Link: How to REALLY set a Netscaler back to factory defaults (factory new condition)'>How to REALLY set a Netscaler back to factory defaults (factory new condition)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.jasonsamuel.com/2010/07/16/getting-around-netscaler-client-ip-issues-without-having-to-use-usip/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to get the IUSR and IWAM user account passwords on an IIS server</title>
		<link>http://www.jasonsamuel.com/2010/04/28/how-to-get-the-iusr-and-iwam-user-account-passwords-on-an-iis-server/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=how-to-get-the-iusr-and-iwam-user-account-passwords-on-an-iis-server</link>
		<comments>http://www.jasonsamuel.com/2010/04/28/how-to-get-the-iusr-and-iwam-user-account-passwords-on-an-iis-server/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 19:19:12 +0000</pubDate>
		<dc:creator>Jason Samuel</dc:creator>
				<category><![CDATA[IIS]]></category>
		<category><![CDATA[adsutil.vbs]]></category>
		<category><![CDATA[IUSR password reset]]></category>

		<guid isPermaLink="false">http://www.jasonsamuel.com/?p=377</guid>
		<description><![CDATA[IIS uses the IUSR_servername guest account to allow anonymous access to websites hosted on the server.  You can always change this to a different account or even change the password for this account yourself.  But sometimes you might be in a situation where you can&#8217;t or don&#8217;t want to change the password but need to [...]<p><a href="http://www.jasonsamuel.com/2010/04/28/how-to-get-the-iusr-and-iwam-user-account-passwords-on-an-iis-server/">How to get the IUSR and IWAM user account passwords on an IIS server</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>



More of my posts you might like:<ol><li><a href='http://www.jasonsamuel.com/2009/12/02/how-to-reset-the-root-user-account-for-a-mysql-database/' rel='bookmark' title='Permanent Link: How to reset the root user account for a MySQL database'>How to reset the root user account for a MySQL database</a></li>
<li><a href='http://www.jasonsamuel.com/2009/03/27/outlook-passwords-and-rpc-over-http/' rel='bookmark' title='Permanent Link: Outlook passwords and RPC over HTTP'>Outlook passwords and RPC over HTTP</a></li>
<li><a href='http://www.jasonsamuel.com/2009/02/09/how-to-remove-a-hidden-user-from-a-bes-server/' rel='bookmark' title='Permanent Link: How to remove a hidden user from a BES server'>How to remove a hidden user from a BES server</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>IIS uses the IUSR_servername guest account to allow anonymous access to websites hosted on the server.  You can always change this to a different account or even change the password for this account yourself.  But sometimes you might be in a situation where you can&#8217;t or don&#8217;t want to change the password but need to know what password Windows has set for it when you installed IIS.</p>
<p>Here&#8217;s how the IUSR account works by the way:</p>
<p>1. User types in http://www.yoursite.com</p>
<p>2. IIS gets the page request, imitates the IUSR_servername account, then executes/accesses the webpage located in your home directory using this account.  It checks NTFS permissions and such during this time as well.  Please note that the IUSR account has the &#8220;Log on Locally&#8221; permission by default to accomplish all this.</p>
<p>3. If everything goes well, authentication is completed and the requested page is sent back to the user&#8217;s browser.  If something doesn&#8217;t go well, such as anonymous access is disabled or NTFS permissions to your root directory don&#8217;t included the IUSR account, the user will typically get an &#8220;HTTP 403 Access Denied&#8221; error message.</p>
<p>Anyhow, you can find the IUSR account password without having to reset it by using the Adsutil.vbs tool.  Open up command prompt and navigate to C:\Inetpub\AdminScripts.  Then type:</p>
<blockquote><p><strong>cscript.exe adsutil.vbs get w3svc/anonymoususerpass</strong></p></blockquote>
<p>or</p>
<blockquote><p><strong>cscript.exe adsutil.vbs get w3svc/wamuserpass</strong></p></blockquote>
<p>to display the IUSR and IWAM account passwords respectively.  You will notice that the passwords are just a bunch of asterisks.  To make them cleartext, navigate to C:\Inetpub\AdminScripts and edit Adsutil.vbs in Notepad.  Find this line:</p>
<blockquote><p><strong>IsSecureProperty = True</strong></p></blockquote>
<p>and change it to:</p>
<blockquote><p><strong>IsSecureProperty = False</strong></p></blockquote>
<p>Now run the script commands above again and you will see the passwords in clear text.  Make sure to put Adsutil.vbs back to the way it was because it&#8217;s not best practice in my opinion to leave your tool with clear text enabled.</p>
<p>Please note that with IIS 7, this has all changed:</p>
<p>1. The IUSR built-in account replaces the IUSR_Servername and IWAM_Servername accounts.  It also no longer has a password since it is a local service account and not a user account so this blog post does not apply to IIS 7 at all.</p>
<p>2. The IIS_IUSRS built-in group replaces the IIS_WPG group (worker process group)</p>
<p><a href="http://www.jasonsamuel.com/2010/04/28/how-to-get-the-iusr-and-iwam-user-account-passwords-on-an-iis-server/">How to get the IUSR and IWAM user account passwords on an IIS server</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>


<p>More of my posts you might like:<ol><li><a href='http://www.jasonsamuel.com/2009/12/02/how-to-reset-the-root-user-account-for-a-mysql-database/' rel='bookmark' title='Permanent Link: How to reset the root user account for a MySQL database'>How to reset the root user account for a MySQL database</a></li>
<li><a href='http://www.jasonsamuel.com/2009/03/27/outlook-passwords-and-rpc-over-http/' rel='bookmark' title='Permanent Link: Outlook passwords and RPC over HTTP'>Outlook passwords and RPC over HTTP</a></li>
<li><a href='http://www.jasonsamuel.com/2009/02/09/how-to-remove-a-hidden-user-from-a-bes-server/' rel='bookmark' title='Permanent Link: How to remove a hidden user from a BES server'>How to remove a hidden user from a BES server</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.jasonsamuel.com/2010/04/28/how-to-get-the-iusr-and-iwam-user-account-passwords-on-an-iis-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Changing the host header for an already existing Sharepoint site/application</title>
		<link>http://www.jasonsamuel.com/2009/08/11/changing-the-host-header-for-an-already-existing-sharepoint-site-application/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=changing-the-host-header-for-an-already-existing-sharepoint-site-application</link>
		<comments>http://www.jasonsamuel.com/2009/08/11/changing-the-host-header-for-an-already-existing-sharepoint-site-application/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 20:11:37 +0000</pubDate>
		<dc:creator>Jason Samuel</dc:creator>
				<category><![CDATA[SharePoint 2007]]></category>
		<category><![CDATA[host headers]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[sharepoint]]></category>

		<guid isPermaLink="false">http://www.jasonsamuel.com/?p=44</guid>
		<description><![CDATA[So let&#8217;s say you have http://originalurl and you want to change it to http://newurl.  Don&#8217;t do it through IIS!!!  Pretty much everything you will ever need to manage a Sharepoint farm will always be found in CA.  Here&#8217;s how you accomplish this simple task: 1. Login to CA 2. Click the Operations tab 3. Click [...]<p><a href="http://www.jasonsamuel.com/2009/08/11/changing-the-host-header-for-an-already-existing-sharepoint-site-application/">Changing the host header for an already existing Sharepoint site/application</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>



More of my posts you might like:<ol><li><a href='http://www.jasonsamuel.com/2009/04/02/sharepoint-warmup-tool-speed-up-your-sharepoint-loading-time/' rel='bookmark' title='Permanent Link: Sharepoint Warmup Tool &#8211; Speed up your Sharepoint loading time'>Sharepoint Warmup Tool &#8211; Speed up your Sharepoint loading time</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>So let&#8217;s say you have http://originalurl and you want to change it to http://newurl.  Don&#8217;t do it through IIS!!!  Pretty much everything you will ever need to manage a Sharepoint farm will always be found in CA.  Here&#8217;s how you accomplish this simple task:</p>
<p>1. Login to CA<br />
2. Click the Operations tab<br />
3. Click on &#8220;Alternate Access Mappings&#8221; under Global Configuration<br />
4.  In the top right, the default view is &#8220;Show All&#8221;.  Just choose the web application you want to change.<br />
5.  Click Edit Public URLs and change the URL to whatever you want it to.</p>
<p>Done!  Test it out and verify it works.</p>
<p><a href="http://www.jasonsamuel.com/2009/08/11/changing-the-host-header-for-an-already-existing-sharepoint-site-application/">Changing the host header for an already existing Sharepoint site/application</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>


<p>More of my posts you might like:<ol><li><a href='http://www.jasonsamuel.com/2009/04/02/sharepoint-warmup-tool-speed-up-your-sharepoint-loading-time/' rel='bookmark' title='Permanent Link: Sharepoint Warmup Tool &#8211; Speed up your Sharepoint loading time'>Sharepoint Warmup Tool &#8211; Speed up your Sharepoint loading time</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.jasonsamuel.com/2009/08/11/changing-the-host-header-for-an-already-existing-sharepoint-site-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to tell which w3wp.exe worker process belongs to what IIS application pool</title>
		<link>http://www.jasonsamuel.com/2009/06/10/how-to-tell-which-w3wp-exe-worker-process-belongs-to-what-iis-application-pool/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=how-to-tell-which-w3wp-exe-worker-process-belongs-to-what-iis-application-pool</link>
		<comments>http://www.jasonsamuel.com/2009/06/10/how-to-tell-which-w3wp-exe-worker-process-belongs-to-what-iis-application-pool/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 17:08:54 +0000</pubDate>
		<dc:creator>Jason Samuel</dc:creator>
				<category><![CDATA[IIS]]></category>
		<category><![CDATA[worker process]]></category>

		<guid isPermaLink="false">http://www.jasonsamuel.com/?p=120</guid>
		<description><![CDATA[Have you ever had an IIS worker process (w3wp.exe) that was taking up a lot of memory and wanted to know exactly which application pool it was tied to?  Run this script located at C:\WINDOWS\system32 from command prompt: cscript iisapp.vbs This will tell you you the process ID of each worker process as well as [...]<p><a href="http://www.jasonsamuel.com/2009/06/10/how-to-tell-which-w3wp-exe-worker-process-belongs-to-what-iis-application-pool/">How to tell which w3wp.exe worker process belongs to what IIS application pool</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>



More of my posts you might like:<ol><li><a href='http://www.jasonsamuel.com/2009/04/02/sharepoint-warmup-tool-speed-up-your-sharepoint-loading-time/' rel='bookmark' title='Permanent Link: Sharepoint Warmup Tool &#8211; Speed up your Sharepoint loading time'>Sharepoint Warmup Tool &#8211; Speed up your Sharepoint loading time</a></li>
<li><a href='http://www.jasonsamuel.com/2009/05/18/how-to-parse-html-files-as-php-on-an-apache-web-server/' rel='bookmark' title='Permanent Link: How to parse HTML files as PHP on an Apache web server'>How to parse HTML files as PHP on an Apache web server</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Have you ever had an IIS worker process (w3wp.exe) that was taking up a lot of memory and wanted to know exactly which application pool it was tied to?  Run this script located at C:\WINDOWS\system32 from command prompt:</p>
<blockquote><p>cscript iisapp.vbs</p></blockquote>
<p>This will tell you you the process ID of each worker process as well as the application pool ID it is running under.  This can help troubleshoot exactly which website or application is causing the memory spike.</p>
<p><a href="http://www.jasonsamuel.com/2009/06/10/how-to-tell-which-w3wp-exe-worker-process-belongs-to-what-iis-application-pool/">How to tell which w3wp.exe worker process belongs to what IIS application pool</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>


<p>More of my posts you might like:<ol><li><a href='http://www.jasonsamuel.com/2009/04/02/sharepoint-warmup-tool-speed-up-your-sharepoint-loading-time/' rel='bookmark' title='Permanent Link: Sharepoint Warmup Tool &#8211; Speed up your Sharepoint loading time'>Sharepoint Warmup Tool &#8211; Speed up your Sharepoint loading time</a></li>
<li><a href='http://www.jasonsamuel.com/2009/05/18/how-to-parse-html-files-as-php-on-an-apache-web-server/' rel='bookmark' title='Permanent Link: How to parse HTML files as PHP on an Apache web server'>How to parse HTML files as PHP on an Apache web server</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.jasonsamuel.com/2009/06/10/how-to-tell-which-w3wp-exe-worker-process-belongs-to-what-iis-application-pool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSL certificate chains explained</title>
		<link>http://www.jasonsamuel.com/2009/03/12/ssl-certificate-chains-explained/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ssl-certificate-chains-explained</link>
		<comments>http://www.jasonsamuel.com/2009/03/12/ssl-certificate-chains-explained/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 21:42:07 +0000</pubDate>
		<dc:creator>Jason Samuel</dc:creator>
				<category><![CDATA[IIS]]></category>
		<category><![CDATA[Windows Server 2003]]></category>
		<category><![CDATA[Windows Server 2008]]></category>
		<category><![CDATA[CA]]></category>
		<category><![CDATA[certificate authority]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[registrar]]></category>
		<category><![CDATA[root certificates]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[ssl chains]]></category>

		<guid isPermaLink="false">http://www.jasonsamuel.com/?p=54</guid>
		<description><![CDATA[Today I would like to clear up some confusion about SSL Chained Certificates. For this example, I will use Network Solutions as the Certificate Authority (CA) you are buying the cert from. This is information you will have to know when you purchase a new SSL cert or renew an existing SSL cert for your [...]<p><a href="http://www.jasonsamuel.com/2009/03/12/ssl-certificate-chains-explained/">SSL certificate chains explained</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Today I would like to clear up some confusion about SSL Chained Certificates. For this example, I will use Network Solutions as the Certificate Authority (CA) you are buying the cert from. This is information you will have to know when you purchase a new SSL cert or renew an existing SSL cert for your Exchange server, IIS web server, or any other external facing server or appliance.</p>
<p>Network Solutions does not issue you a single cert. They issue you an SSL chained cert. So for example, if you are buying a cert for:</p>
<p><strong>widgets.com</strong></p>
<p>They will validate and issue you the cert, but when you download and open the zip file from their website, you will see the following certificate bundle:</p>
<p><strong>AddTrustExternalCARoot.crt<br />
NetworkSolutions_CA.crt<br />
WIDGETS.COM.crt<br />
UTNAddTrustServer_CA.crt</strong></p>
<p>Let&#8217;s analyze these certs in your chain. The first one is AddTrustExternalCARoot.crt which is called the &#8220;root certificate&#8221;. This is the first cert in your chain. This root cert is installed to the Trusted Root Certification Authorities store on your server or network appliance.</p>
<p>The second cert in your chain is NetworkSolutions_CA.crt and the UTNAddTrustServer_CA.crt which are &#8220;intermediate certificates&#8221;. An intermediate cert is essentially a certificate issued by the Trusted Root CA specifically designed to issue SSL Certificates to you. The reason for this is because if the CA root cert were to ever be compromised, the entire chain fails. It is good security practice to use an &#8220;intermediary&#8221; to issue the certs from to prevent your root CAs from being exposed from the signing process. If an intermediate were to ever be compromised, you can always regenerate those unlike the root certs. This intermediate certificate sits between your website cert and the root cert. This intermediate cert is installed to the Intermediate Certification Authorities store on your server or appliance.</p>
<p>The last cert in your chain is WIDGETS.COM.crt which is your actual SSL cert. This is also known as your &#8220;domain certificate&#8221;. This domain cert is installed to the Personal store on your server or appliance.</p>
<p>So the end result is chain of certs that begins at the trusted root CA, runs through the intermediary, and finally ends with the SSL certificate issued to you for your website or appliance (widgets.com).</p>
<p>In most cases, any sever or appliance out there will already have the trusted root cert for Network Solutions installed. You can just install your SSL cert and not have to worry about anything else in most cases. Depending on where you buy your cert from and what you are trying to install your cert to, you may have to go through the steps of installing the Trusted Root cert and Intermediate cert first before installing your SSL cert. With some web browsers like Internet Explorer 7 for example, you can get away with not having to install any Intermediate Certificate because IE7 will automatically go out automatically download the intermediate cert the first time a user visits your website. This makes things easy for the lazy admin but it&#8217;s always best practice to go a head and add the Intermediate cert on your end instead of depending on the client and their browser&#8217;s ability to do this. There is no point in risking a certificate error for the end user when the fix is so easy.</p>
<p>To verify the chain, go to any site you know that uses SSL (https://) and then click on the lock in Internet Explorer, it will let you view the SSL cert info. Click the &#8220;Certificate Path&#8221; tab and you can see the chain we described above:</p>
<p>Trusted Root &#8212;&gt; Intermediate &#8212;&gt; SSL Certificate</p>
<p><img class="alignnone size-full wp-image-85" title="sslcertpath" src="http://www.jasonsamuel.com/wp-content/uploads/2009/11/sslcertpath.png" alt="sslcertpath" width="409" height="483" /><br />
You can then click on each one of these certs and hit the &#8220;View Cert&#8221; button to view each cert in the chain individually. Good luck and post a comment if you have any questions. <img src='http://www.jasonsamuel.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.jasonsamuel.com/2009/03/12/ssl-certificate-chains-explained/">SSL certificate chains explained</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jasonsamuel.com/2009/03/12/ssl-certificate-chains-explained/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/


Served from: www.jasonsamuel.com @ 2010-07-31 20:01:52 -->