How to add https/ssl support to Sitecore 9.1 local instance?

I noticed that accidentally that by default CM application uses http not https – at least when we use installation scripts for on-premise XP0 topology.

Because I wanted to add https to my website I asked myself – “how can I do that EASILY?” I do not know how about you – but I hate to play with certificates on my local machine – very often it means many lost hours which I could spend on development of new features.

To achieve that I checked how Sitecore create and install certificates inside their scripts and I found the following task:

 Invoke-AddWebFeatureSSLTask

It took me few minutes to find final list of attributes which should be set to add certificate acceptable by services like identity server or xconnect. Final version is here:

Invoke-AddWebFeatureSSLTask -Hostname sc910.sc -SiteName sc910.sc -Port 443 -ClientCertLocation LocalMachine -OutputDirectory "C:\certificates" -RootDnsName "DO_NOT_TRUST_SitecoreRootCert" -RootCertName "root-authority"

HostName and SiteName should be values used by your website (check it in IIS configuration if you are not sure). Output directory is a place where you store your certificates. The rest of the parameters I would leave unchanged because they use default values from Sitecore’s installation scripts.

As a result of this task you should see:

  • new certificate file
  • new certificate registered in IIS
  • new binding added to your website

Because Identity Server uses http by default – please remember to update its configuration. If you do not do that – you will not be able to log in into Sitecore instance.
More details about that you will find here.

PowerShell – Stage 2

In this part of PowerShell topic I will show you how to create IIS website and unzip Sitecore into the new site directory.

Set site name

Before we will do a real job we have to define name of our new site. We can ask user in console to set the value. This code will prompt for name:

As result we will have name saved in variable $nameProvidedByUser.

Stop IIS

Because we have to add new ApplicationPool, create new IIS Site, sometimes also override some values in confiugration – it is better to stop our local instance of IIS before we will start.

We can do this with script:

After that definition we have to just call our function with command “IISStop”

Do some real work – define/copy/run

Ok, for now we have defined name and stopped IIS instance. We are ready to do some real work.

Run following command and at the end you will have ready to work IIS site and copied Sitecore files inside web root.

We have here code for:

  • unpacking ZIP files
  • changing the structure of unpacked files
  • creation of IIS AppPool
  • creation of IIS Site
  • creation of settings for bindings


But what exactly this command will do? Here you have explanation.

Inside this block of code we use some functions which were prepared before.

Add host to Windows file

If we want to define new site in our environment we also should add new definition in windows hosts file. We can do this with following script:

Start IIS

Because we have in plan to stop our IIS we also should have a script to start it again.

We can do this with following function:

Select version of Sitecore

Probably you will have more than one version of Sitecore in your files system – it means that would be nice to have an option to select which version of Sitecore should be copied into our web root. We can provide that feature with code:

What’s next?

In next part of PowerShell fun I am going to refactor code and set some settings like:

  • permissions
  • database connection strings

If you want to check how current version works you can checkout (and later also participate) code from my public repository on GitHub : PowerShell-automation

PowerShell – stage 1

I have decided to prepare some PowerShell scripts to automatize my work with Sitecore. In this and next articles with PowerShell in the name, you will find some resolved issues and some useful scripts as well.

The NAME

As you can noticed in the title – I wrote PowerShell not Powershell or powershell or anything else. You should also remember about correct name.

I do not know if you noticed how people very often write Sitecore in the wrong way. I mean examples like “SiteCore” – looks strange right?

That is why we should care about details.

Prepare your system to run PowerShell scripts

After some fun with inline PowerShell scripts you probably will decide to create your first file with PowerShell script. Then probably you will have following error:

File XXX cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170.

It means that you do not have enough permissions to run PowerShell scripts. You have to change that, for instance with following command (remember to open PowerShell Terminal in Administrator mode):

Set-ExecutionPolicy RemoteSigned

More about options you can find here: https://msdn.microsoft.com/powershell/reference/5.1/Microsoft.PowerShell.Core/about/about_Execution_Policies

Tools

To write/manage your PowerShell scripts you can use many tools. I have chosen Visual Studio Code. It’s simple, it’s for free and when you install PowerShell Extension it will have IntelliSense.