Free SSL Certificates On IIS With LetsEncrypt

4.5 (8 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:

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


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.

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


- 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


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


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:

- Satyabrata Mohapatra

Thanks for sharing. Learned a lot !!

Recent Comments

Thomas 05/03/2018 00:59
In response to I'm Not Writing A Book On Razor Pages
There's a typo on this page: = true)] should be [BindProperty(SupportsGet = true)]...

Rolf Herbert 04/03/2018 19:25
In response to I'm Not Writing A Book On Razor Pages
So is MS deprecating razor Web Pages..? Is it dead..? I wish they would stop killing things so its...

Borut 17/02/2018 12:59
In response to I'm Not Writing A Book On Razor Pages
Mike, is it possible that Web Pages and Razor Pages "live" together in one web application? I a I...

hrboyce 09/02/2018 04:44
In response to I'm Not Writing A Book On Razor Pages
Mike, First thanks for doing this but I have to ask, any chance you would consider converting one of...

aziz sallam 07/02/2018 10:18
In response to I'm Not Writing A Book On Razor Pages
u are a great man...

Satyabrata Mohapatra 31/01/2018 11:36
In response to I'm Not Writing A Book On Razor Pages
This is a great news!!!! Thanks...

tangdf 30/01/2018 07:25
In response to I'm Not Writing A Book On Razor Pages
=> { o.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute()); }); The extension method does...

Obinna Okafor 30/01/2018 04:02
In response to I'm Not Writing A Book On Razor Pages
Thank you very much. I would like to see a project built from scratch using Razor Pages. And it show...

rachida Dukes 31/10/2017 13:52
In response to Customising Identity in Razor Pages
Thanks again for this wonderful tutorial. I followed all the steps in this section called: Adding...

Rachida 31/10/2017 12:06
In response to Customising Identity in Razor Pages
Thanks very much for this wonderful tutorial, it helped a lot....