Free SSL Certificates On IIS With LetsEncrypt

4.33 (6 votes)

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.

You might also like...

Date Posted:
Last Updated:
Posted by:
Total Views to date: 1997

5 Comments

- Ted Driver

This looks great is you have command line access to your web server - what about those of us on shared plans? Is there any way to get this tool to generate SSL certs for sites hosted on shared servers?

- Mike

@Ted,

No - the tool must run on the server where the site is hosted to be able to generate the verification file that proves that the domain is hosted there. A shared hosting provider is highly unlikely to allow you to run console apps on their servers. That's why I posted a link to the hosting companies who support LetsEncrypt and provide free SSL certificates.

Alternatively, you could write your own ACME client and incorporate it as part of your web application. Here are some starting points:

- Gfw

I have used WinSimple for about the last 9 months - works great. One thing that you want to make sure of is to allow the folder ".well-known" to be accessed by http (not https) or the renewals will fail. .well-known is created by WinSimple as the certificates are created or updated.

- Mike

@Gfw

Thanks for pointing that out. If you use Url Rewriting to force all users to go over to https, you need to add an extra rule in your web.config. It's covered in this issue: https://github.com/Lone-Coder/letsencrypt-win-simple/issues/103

- Satyabrata Mohapatra

Thanks for sharing. Learned a lot !!

Recent Comments

Obinna Okafor 26/05/2017 16:16
In response to Razor Pages - The Elevator Pitch
Thank you for this wonderful piece, Mike. I need more of these...Keep them coming - anything more...

Cyrus 26/05/2017 06:00
In response to Razor Pages - The Elevator Pitch
There are some concern about razor pages performance. Is it faster or slower than MVC? would you a a...

Cyrus 26/05/2017 05:44
In response to Razor Pages - Understanding Handler Methods
well done, thank you....

Satyabrata Mohapatra 23/05/2017 11:41
In response to Razor Pages - Understanding Handler Methods
Nice and easy !! Great post....

Cyrus 16/05/2017 19:55
In response to Razor Pages - Getting Started With The Preview
There is something wrong related to microsoft.dotnetcore.mvc.taghelpers! if you remove it from page...

Cyrus 16/05/2017 10:18
In response to Razor Pages - Getting Started With The Preview
well done mike, it was very useful, I really appreciate that....

Satyabrata Mohapatra 16/05/2017 07:21
In response to Razor Pages - Getting Started With The Preview
Finally!!!! web pages in asp.net core!!! Super excited !!!! Thank u sir for sharing.....Awaiting on...

Daniele 14/03/2017 10:24
In response to Working With Zip Files In ASP.NET MVC
is it possible give to the user a progress bar of the zipping process? Thanks in advance. ...

Suraj 13/03/2017 22:20
In response to Working With Zip Files In ASP.NET MVC
Very nice article. Thanks....

Satyabrata Mohapatra 19/02/2017 03:01
In response to Free SSL Certificates On IIS With LetsEncrypt
Thanks for sharing. Learned a lot !!...