Sitecore Experience Commerce 9 install task CreateWebsiteOps Error- Cannot bind parameter 'Signer' to the target.

The Problem

When running the CreateWebsiteOps task during installing Sitecore Experience Commerce 9 Update 2, I got the following error:

Cannot bind parameter 'Signer' to the target. Exception setting "Signer": "Value cannot be null.

Investigation

Upon inspection of CommerceEngine.Deploy.json (located at SIF.Sitecore.Commerce.1.2.14\Configuration\Commerce\CommerceEngine\CommerceEngine.Deploy.json), I could see that a root certificate is used to sign a new certificate for the Commerce Ops website. By default, the script is looking for this certificate:

"Root.Cert.DnsName": "[concat('DO_NOT_TRUST_',parameter('RootCertFileName'))]"

Which is using the following parameter with a default value of “SitecoreRootCert”:

"RootCertFileName": { "Type": "string", "Description": "The file name of the root certificate to be created.", "DefaultValue": "SitecoreRootCert" },

Therefore, it’s looking for a root certificate called 'DO_NOT_TRUST_ SitecoreRootCert’, which does not exist.

The Fix

Create a new root certificate with that name and add it to your root certificate store. Otherwise if you already have another root certificate you want to sign with, replace the name with that.

P.S. Have a look here on how to generate your own root certificate.