{"id":7009,"date":"2021-12-03T00:06:53","date_gmt":"2021-12-03T05:06:53","guid":{"rendered":"https:\/\/www.caskeys.com\/dc\/?p=7009"},"modified":"2022-08-27T09:00:13","modified_gmt":"2022-08-27T13:00:13","slug":"installing-security-certificate-in-iis","status":"publish","type":"post","link":"https:\/\/www.caskeys.com\/dc\/installing-security-certificate-in-iis\/","title":{"rendered":"Installing Security Certificate in IIS"},"content":{"rendered":"\n<p>Thanks to the somewhat justifiable paranoia of most modern browsers, it&#8217;s nearly impossible to run a site without installing a third party security certificate. Try it and the end user&#8217;s browser will throw esoteric errors that lead them to believe you&#8217;re handing out the combination of their first born child&#8217;s hope chest. You can apply a self-signed certificate for development purposes, but don&#8217;t even think about self-signing production sites. The browsers will howl immediately, and at best your clients will complain. More likely, they&#8217;ll just leave and never return.<\/p>\n\n\n\n<p>For novice administrators (and sometimes experts too), installing third party certificates is rather frustrating. I&#8217;ve been there plenty, and part of the problem is the lack of a simple step through. This guide by yours truly aims to fill that gap, and keep things simple as possible. There are more direct means if you want to get your hands dirty, but then, you probably wouldn&#8217;t need this guide. \ud83d\ude42<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Getting Started<\/h2>\n\n\n\n<p>Before getting started, you must purchase a security certificate from a trusted vendor. At the moment, <a href=\"https:\/\/incommon.org\/certificates\/\" data-type=\"URL\" data-id=\"https:\/\/incommon.org\/certificates\/\">InCommon<\/a> and <a href=\"https:\/\/www.globalsign.com\/en\" data-type=\"URL\" data-id=\"https:\/\/www.globalsign.com\/en\">GlobalSign<\/a> are the most popular. Once you have secured a certificate (pun intended), follow the steps below to get it installed and running on your site. <\/p>\n\n\n\n<p>Note this guide assumes Internet Information Services (IIS) version 10 and <a href=\"https:\/\/incommon.org\/certificates\/\" data-type=\"URL\" data-id=\"https:\/\/incommon.org\/certificates\/\">InCommon<\/a> as the certificate provider. Some steps may vary depending on version and vendor. If you are unsure, contact your vendor or leave a question in the comments below.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Creating Certificate Signing Request (CSR)<\/h2>\n\n\n\n<p>Acquiring a certificate from your vendor requires sending a CSR. Some vendors offer a tempting automated setup option. Don&#8217;t fall for that trap. Automated CSR setups have dubious reliability, and IIS is notoriously finicky about certificates. You will find it simpler and less frustrating to perform the steps yourself. <\/p>\n\n\n\n<p>Open IIS Manager and select the target server. &nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"522\" height=\"452\" src=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-3.png\" alt=\"\" class=\"wp-image-7013\" srcset=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-3.png 522w, https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-3-300x260.png 300w\" sizes=\"auto, (max-width: 522px) 100vw, 522px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>Locate and open the Server Certificates plugin. It is included as part of the default IIS Installation.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-4.png\"><img loading=\"lazy\" decoding=\"async\" width=\"607\" height=\"558\" src=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-4.png\" alt=\"\" class=\"wp-image-7014\" srcset=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-4.png 607w, https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-4-300x276.png 300w\" sizes=\"auto, (max-width: 607px) 100vw, 607px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>Select Create Certificate Request and fill out the name properties. The information you provide here largely depends on your relationship with certificate vendor. If there is a mismatch, the vendor may deny your certificate or IIS will throw errors during later steps that are very difficult to diagnose.&nbsp;<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Common Name \u2013 Typically the domain name of your site.<\/li><li>Organization \u2013 Company\/Personal name.&nbsp;<\/li><li>Organizational unit &#8211; Department\/Compartmentalization.<\/li><li>City\/locality &nbsp;<\/li><li>State\/province&nbsp;<\/li><li>Country\/region<\/li><\/ol>\n\n\n\n<p>When you are finished filling out the form, click Next.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-6.png\"><img loading=\"lazy\" decoding=\"async\" width=\"713\" height=\"533\" src=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-6.png\" alt=\"\" class=\"wp-image-7016\" srcset=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-6.png 713w, https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-6-300x224.png 300w\" sizes=\"auto, (max-width: 713px) 100vw, 713px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>At the Cryptographic Service Provider Properties dialog, select the following options, then click Next:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Microsoft RSA SChannel Cryptographic Service Provider<\/li><li>2048<\/li><\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-7.png\"><img loading=\"lazy\" decoding=\"async\" width=\"673\" height=\"515\" src=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-7.png\" alt=\"\" class=\"wp-image-7017\" srcset=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-7.png 673w, https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-7-300x230.png 300w\" sizes=\"auto, (max-width: 673px) 100vw, 673px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>Enter the file name and location, then click Finish. This creates a Certificate Signing Request (CSR) file. You&#8217;re going to need the CSR file in subsequent steps, so make sure it&#8217;s easy to find, but don&#8217;t put it in a publicly accessible folder.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-8.png\"><img loading=\"lazy\" decoding=\"async\" width=\"673\" height=\"516\" src=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-8.png\" alt=\"\" class=\"wp-image-7018\" srcset=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-8.png 673w, https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-8-300x230.png 300w\" sizes=\"auto, (max-width: 673px) 100vw, 673px\" \/><\/a><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">Request Signing From Vendor <\/h2>\n\n\n\n<p>Now that you have a completed CSR, you can send it to the vendor for signing. It goes without saying there are minor differences depending on the vendor, but the basic premise is universal. All reputable certificate vendors offer robust support, so don&#8217;t be afraid to contact them and ask questions.<\/p>\n\n\n\n<p>Log into your certificate vendor and create a request. For InCommon, you click Add at the certificates tab.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-13.png\"><img loading=\"lazy\" decoding=\"async\" width=\"657\" height=\"515\" src=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-13.png\" alt=\"\" class=\"wp-image-7026\" srcset=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-13.png 657w, https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-13-300x235.png 300w\" sizes=\"auto, (max-width: 657px) 100vw, 657px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p><br>The vendor will ask for your CSR file. You may upload the file or copy the contents directly. They should look something like this:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/12\/image.png\"><img loading=\"lazy\" decoding=\"async\" width=\"643\" height=\"504\" src=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/12\/image.png\" alt=\"\" class=\"wp-image-7183\" srcset=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/12\/image.png 643w, https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/12\/image-300x235.png 300w\" sizes=\"auto, (max-width: 643px) 100vw, 643px\" \/><\/a><\/figure>\n\n\n\n<p>The vendor will attempt to auto-fill fields for basic information. Select SHA-2 for your certificate profile. The other fields should align with the information you filled out during CSR creation. Again, avoid mismatches.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-2.png\" alt=\"\" class=\"wp-image-7012\" width=\"446\" height=\"386\" srcset=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-2.png 699w, https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-2-300x260.png 300w\" sizes=\"auto, (max-width: 446px) 100vw, 446px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>When you complete the request, you will need to wait for your vendor to verify and issue a certificate. The time needed varies by vendor, but is usually about five minutes. Most vendors will alert you via email when the certificate is issued.<\/p>\n\n\n\n<p>To download a certificate, log in and open the Certificates tab. Then check the appropriate certificate and click Details.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-14.png\"><img loading=\"lazy\" decoding=\"async\" width=\"595\" height=\"424\" src=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-14.png\" alt=\"\" class=\"wp-image-7029\" srcset=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-14.png 595w, https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-14-300x214.png 300w\" sizes=\"auto, (max-width: 595px) 100vw, 595px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>The details display provides information about your certificate and an option n to download. Click Select. If asked the type, select Certificate only, PEM encoded and download. The file extension should end with &#8220;.cer&#8221;.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-15.png\"><img loading=\"lazy\" decoding=\"async\" width=\"575\" height=\"461\" src=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-15.png\" alt=\"\" class=\"wp-image-7030\" srcset=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-15.png 575w, https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-15-300x241.png 300w\" sizes=\"auto, (max-width: 575px) 100vw, 575px\" \/><\/a><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">Install Certificate<\/h2>\n\n\n\n<p>Return to IIS, open the Server Certificates plug if it is not already, and select Complete Certificate&nbsp;Request.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-11.png\"><img loading=\"lazy\" decoding=\"async\" width=\"433\" height=\"384\" src=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-11.png\" alt=\"\" class=\"wp-image-7022\" srcset=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-11.png 433w, https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-11-300x266.png 300w\" sizes=\"auto, (max-width: 433px) 100vw, 433px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>When the Complete Certificate Request dialog opens, fill out the fields with following values:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>File name:<\/strong> Browse to the certificate file you just downloaded from vendor.<\/li><li><strong>Friendly name:<\/strong> Ostensibly a label, but it&#8217;s best to match to match the Common Name used in certificate request. Otherwise IIS tends to throw the following error: <em>&#8220;cannot find the certificate request associated with this certificate file. A certificate request must be completed on the computer where it was created.&#8221;<\/em>. See <a href=\"https:\/\/docs.microsoft.com\/en-us\/troubleshoot\/iis\/error-install-certificate\" data-type=\"URL\" data-id=\"https:\/\/docs.microsoft.com\/en-us\/troubleshoot\/iis\/error-install-certificate\">this support article<\/a> for details.<\/li><li><strong>Certificate store:<\/strong> Web hosting.<\/li><\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-12.png\"><img loading=\"lazy\" decoding=\"async\" width=\"680\" height=\"516\" src=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-12.png\" alt=\"\" class=\"wp-image-7023\" srcset=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-12.png 680w, https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-12-300x228.png 300w\" sizes=\"auto, (max-width: 680px) 100vw, 680px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>Now hold your breath and click OK. If IIS is in a good mood, the certificate is installed. Breathe a sigh of relief. There&#8217;s more to do, but if anything was wrong, this is where the errors get thrown. If you do receive an error, I would again recommend you view <a href=\"https:\/\/docs.microsoft.com\/en-us\/troubleshoot\/iis\/error-install-certificate\" data-type=\"URL\" data-id=\"https:\/\/docs.microsoft.com\/en-us\/troubleshoot\/iis\/error-install-certificate\">this support article<\/a> for the some of the most common problems. If you are still stuck, leave a comment with your issue and maybe I can help. \ud83d\ude42 <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Binding<\/h2>\n\n\n\n<p>Installing a certificate on its own doesn&#8217;t do anything to secure your site. You still need to bind through SSL (Secure Socket Layer). Open IIS Manager, and select the target site.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-16.png\"><img loading=\"lazy\" decoding=\"async\" width=\"469\" height=\"422\" src=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-16.png\" alt=\"\" class=\"wp-image-7031\" srcset=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-16.png 469w, https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-16-300x270.png 300w\" sizes=\"auto, (max-width: 469px) 100vw, 469px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>Locate the Actions sidebar, and open Bindings. Also note the available options under Browse heading.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-21.png\"><img loading=\"lazy\" decoding=\"async\" width=\"565\" height=\"547\" src=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-21.png\" alt=\"\" class=\"wp-image-7036\" srcset=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-21.png 565w, https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-21-300x290.png 300w\" sizes=\"auto, (max-width: 565px) 100vw, 565px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>The list of current binds will open. There is most likely an http binding to port 80. Click the Add button and populate the options as followed (leave others in their default state):<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Type:<\/strong> Https<\/li><li><strong>Hostname:<\/strong> The domain name of your site.<\/li><li><strong>SSL Certificate: <\/strong>Select the certificate you downloaded and installed from vendor in previous steps. Certificates are listed by their friendly name.<\/li><\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-20.png\"><img loading=\"lazy\" decoding=\"async\" width=\"687\" height=\"546\" src=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-20.png\" alt=\"\" class=\"wp-image-7035\" srcset=\"https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-20.png 687w, https:\/\/www.caskeys.com\/dc\/wp-content\/uploads\/2021\/01\/image-20-300x238.png 300w\" sizes=\"auto, (max-width: 687px) 100vw, 687px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>Click OK, and your binding is complete. Note the new option under Browse heading. Your site is now responds to requests through <code>https:\/\/<\/code>, with a trusted vendor certificate.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Final Words<\/h2>\n\n\n\n<p>It&#8217;s important to understand that enabling access through <code>https:\/\/<\/code> may quiet browser warnings, but it does nothing at all to secure your site. All the https protocol really does is enable encrypted communication between sites and clients, and even then not by default since your clients are likely accustomed to an <code>http:\/\/<\/code> address. Humans are humans &#8211; asking clients to update bookmarks is spitting against the wind. The only way to ensure they visit through the &#8220;https:\/\/&#8221; protocol is server side redirection. This typically requires setting up a URL rewrite, which is another article all by itself.<\/p>\n\n\n\n<p>Just to emphasize &#8211; encrypting  the client\/server connection does NOT protect your site against malefactors. Hardening sites requires a concerted, multifaceted effort that is beyond the scope of any single tutorial. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Step by step guide to create and install security certificates into an IIS hosted website.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"Step by step guide to create and install security certificates into an IIS hosted website.","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[71],"tags":[298,351],"class_list":["post-7009","post","type-post","status-publish","format-standard","hentry","category-technology-temerity","tag-technology-temerity","tag-tutorials"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5lNM5-1P3","jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.caskeys.com\/dc\/wp-json\/wp\/v2\/posts\/7009","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.caskeys.com\/dc\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.caskeys.com\/dc\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.caskeys.com\/dc\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.caskeys.com\/dc\/wp-json\/wp\/v2\/comments?post=7009"}],"version-history":[{"count":18,"href":"https:\/\/www.caskeys.com\/dc\/wp-json\/wp\/v2\/posts\/7009\/revisions"}],"predecessor-version":[{"id":7228,"href":"https:\/\/www.caskeys.com\/dc\/wp-json\/wp\/v2\/posts\/7009\/revisions\/7228"}],"wp:attachment":[{"href":"https:\/\/www.caskeys.com\/dc\/wp-json\/wp\/v2\/media?parent=7009"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.caskeys.com\/dc\/wp-json\/wp\/v2\/categories?post=7009"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.caskeys.com\/dc\/wp-json\/wp\/v2\/tags?post=7009"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}