If you found all your way to this article, chances are you ran into the following error during installation of Sitecore 9.0: "Cannot bind argument to parameter 'Signer' because it is null."

self-signed-certificate-failed

Neil Killen already stated that the Sitecore Fundmentals and therefore also the Sitecore Installation Framework (SIF) do not support Windows 8.1 / IIS 8.5. The problem here is that Sitecore Fundamentals internally use some Windows PowerShell Cmdlets which might differ from one version to another. More precisely, in this very situation it uses the New-SelfSignedCertificate Cmdlet. If we compare this in both Windows 10 and Windows 8.1 it becomes obvious why this error happens after all. The parameter "Signer" and various other parameters are not present in the Windows 8.1 version.

Warning: The following fix is not meant for production use. It only supplements your local environment setup.

How to fix this issue

1. Create a self-signed certificate in Windows 8.1

As the name of the Cmdlet mentioned before already tells us, it tries to create a self-signed certificate. As we cannot rely on Sitecore Fundamentals to perform this task for us, we need to do it ourselves. Luckily Kam Figy already provides a great script for securing your Solr server. I made some slight changes to this script in order to meet our requirement (e.g. SIF requires read permissions to the private key of the certificate) and converted it to a SIF task. Download New-SignedCertificateWindows81.ps1 and save it to the folder where the script from the Sitecore 9 installation guide (section 5.2.1) is located.

2. Change xconnect-createcert.json

We need to integrate the New-SignedCertificateWindows81.ps1 script into SIF.

  1. Open xconnect-createcert.json and change task "CreateSignedCert" as shown below
  2. Register the new module as shown below

3. Change the official installation script

In our main script which is provided by the Sitecore 9 installation guide (section 5.2.1) we need to do two slight changes.

  1. Remove the suffix "_client" from variable $certParams.CertificateName
  2. Add a new property SSLCert in variable $xconnectParams

Now, you should be able to run the official installation script without errors regarding certificate handling. If you have any problems then let me know in the comments down below.