Free SSL Certificates On IIS With LetsEncrypt

If you have forms on your site that take a user's personal details, you should protect the page by running it under HTTPS. That way, any data that's posted from the form (email address, credit card number etc) is encrypted and hidden from prying eyes. It's not just e-commerce sites that should be protected. Intranets and other line of business apps that require authentication, blogs with comment forms that ask for email addresses and so on. The main barrier to this in the past has been the cost of the digital certificate (SSL Certificate) that asserts that you are who you say you are. LetsEncrypt is a free, automated, and open Certificate Authority that removes this barrier.

LetsEncrypt is operated by the Internet Security Research Group (ISRG), and is a Linux Foundation Collaborative Project, which is also responsible for the Linux operating system and Nodejs among other projects. LetsEncrypt is supported by a range of organisations including Mozilla, Chrome, Akamai and Facebook. The certificates that LetsEncrypt issues are recognised by all major browsers, which results in the familiar padlock symbol being displayed on properly secured sites:

Secured site

 

Obtaining a certificate

Full details of how LetsEncrypt works can be found on their site. Suffice to say, you need a client program running on your web server that implements the ACME (Automatic Certificate Management Environment) protocol so that it can successfully communicate with LetsEncrypt. A number of these are available. I chose to use letsencrypt-win-simple, which is a command line interface (CLI) client. Despite that, it really is very simple to use. The latest version is 1.9.1 at the time of writing. Here's a step-by-step guide to using letsencrypt-win-simple:

  1. Download and unzip the contents to a folder for later user. I chose C:\LetsEncrypt as a location.
  2. Open the folder, right click on the .exe file and choose Run as Administrator

    Run as administrator

  3. Following the onscreen prompts, first provide an email address for renewal failure notifications.
  4. Agree to the terms and conditions.
  5. The application then scans the site bindings in IIS and asks which one you want to get a certificate for.

    LetsEncrypt Win Simple

  6. Enter the number and press Return. Note, if you have more than 50 sites registered with IIS, the screen will paginate the list. In that case, it might be a good idea to make a note of the number of the entry you want to request a certificate for.

And that's pretty much it. The application takes care of obtaining the certificate and storing it. It will also create a scheduled task to request renewals as certificates expire. And it will add new bindings for the site if necessary, defaulting to port 443 for https.

Redirect non-https traffic

One thing that you may want to do is to ensure that all traffic goes to the https version of your site. If o uhave access to the server (which is the assumption in this article) you should install the IIS Rewrite Module if you haven't already done so, and then add the following to your web.config file:

<system.webServer>
  <rewrite>
    <rules>
      <rule name="HTTP Redirect to HTTPS" enabled="true" stopProcessing="true">
          <match url="(.*)" />
          <conditions>
              <add input="{HTTPS}" pattern="off" />
          </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

Summary

This article shows how easy it is to obtain free SSL certificates for your website from LetsEncrypt, using the letsencrypt-win-simple command line tool. A growing number of web hosting companies also support LetsEncrypt, which means that the days of expensive SSL certificates are likely to be numbered.