Let’s Encrypt is a free SSL/TLS certificate provider, with automated certificate issuance and renewal tools for Linux and Windows. You can use it to automatically issue and renew SSL certificates on your web servers. This guide shows you how to correctly setup Let’s Encrypt for Microsoft Exchange Server and IIS using freely available tools.
Let’s Encrypt is a great option for SSL/TLS Certificates, as the certificates can be renewed automatically (and it’s totally free!). This installation method is based on how I installed Let’s Encrypt for Microsoft Remote Desktop Services. In fact, this article is largely copied and pasted – so feel free to skip the instructions if you are already familiar, and just go download that handy Powershell script.
What you need
- Microsoft Remote Exchange Server
- Public-facing access to IIS Server Port 80 (including public DNS records)
- Let’s Encrypt Windows Simple
- My free Powershell script to install the certificates in Exchange
I’ve tested this process on Windows Server 2012 R2, with all Microsoft Exchange roles housed on the one server. You will need to modify these instructions and the script if you have split your role services amongst multiple servers.
Setup Instructions
- Download Let’s Encrypt Windows Simple and extract the files to C:Program FilesLets Encrypt
- Download my Powershell script and save it as C:Program FilesLets EncryptExchangeLetsEncrypt.ps1
- Run LetsEncrypt.exe
- Enter your email address
- Accept the terms and conditions
- Enter “N” to create a new certificate
- Select Option 3 for “SAN Certificate for all bindings of multiple IIS sites” (Exchange >= 2013 has two IIS sites that need a certificate)
- Select the “HTTP-01” option: “Create temporary application in IIS”
- After the certificate has been created, don’t let it create the auto-renewal scheduled task (we’ll do this later)
If all goes well, you should now have a new SSL Certificate installed in your IIS site. You can confirm this by opening your Microsoft Exchange Web Access site in a browser and checking that the SSL Certificate has been issued by Let’s Encrypt.
There should also be a series of certificate files saved in C:ProgramDataletsencrypt-win-simplehttpsacme-v01.api.letsencrypt.org
However, at this stage not all Exchange roles have the certificate at this stage.
Our job now is to install the certificates into Exchange. You could do so manually in the ECP, but you’ll need to do this manually every 60 days as the certificate comes up for renewal.
Instead, we’re going to use Powershell.
If you run the Powershell script, you’ll need to provide just two parameters:
- -CertificateImport – The path to the PFX file generated by Let’s Encrypt (found in C:ProgramDataletsencrypt-win-simplehttpsacme-v01.api.letsencrypt.org)
- -RDCB – The FQDN of your server (the internal DNS name used by Active Directory, not any external alias you may have)
Running this script within 10 minutes of generating the original certificates should allow it to install successfully.
You can check this from that same Deployment Properties windows in Server Manager. You can also try to access a Remote Resource and see which certificate it presents.
Automating the Renewal of Exchange Certificates
All we need to do now is setup automatic renewal. Thankfully, this can be done with a simple batch script:
Edit this script to contain the full path to your PFX file, and then schedule it to run in Task Scheduler once per day. The renewal will only take place close to the 60-day expiry window, and when that happens the Powershell script will update the Exchange certificates.
Monitoring the Certificate Renewal
No one likes lapsed certificates or certificate warnings. Prevent this by subscribing to a free SSL Expiry Checker, such as CertificateMonitor.org (or the host-it-yourself version).
That’s it! Hopefully these instructions have allowed you to install a Let’s Encrypt Free SSL Certificate in Microsoft’s Exchange Server. If you have any tips, please post them in the comments below!