Domain: SSRS / PBIRS · Risk: Changes state · Runs on: Windows, PowerShell 5.1 or 7
This attaches the certificate to the report server’s web endpoint. It uses Reporting Services’ own configuration interface, so the two places a binding lives — RS configuration and the Windows HTTP layer — stay in agreement. When an old, conflicting certificate is already in place, -Force replaces it cleanly.
Calls CreateSSLCertificateBinding on the RS WMI configuration class — updating rsreportserver.config and the HTTP.sys binding atomically. The RS service must be restarted to apply (caller’s responsibility). Never throws; the RS instance is located automatically (no hard-coded version integer).
Recipe 01 — Bind on a SSRS 2017+ instance
Set-RsCertBinding -Thumbprint 'A1B2C3…A1B2' -RsInstance 'SSRS'Binds to the web service endpoint on port 443.
Recipe 02 — The web portal on PBIRS, on a remote server
Set-RsCertBinding -Thumbprint 'A1B2C3…A1B2' -RsInstance 'PBIRS' `
-Application ReportServerWebApp -Port 443 -ComputerName RSSERVER01 -Credential (Get-Credential)Recipe 03 — Replace a conflicting binding
Set-RsCertBinding -Thumbprint $newTp -RsInstance 'SSRS' -ForceWithout -Force, a different cert already bound to that IP:port returns Failed with a hint. With it, the old binding is removed via the RS API and the new cert bound.
Watchpoint — the SSL binding at an IP:port is shared. Every RS application bound there uses the same certificate, so -Force re-binds the new cert for all applications on that IP:port, not just the one named.
“Binding” a certificate means telling the web endpoint: use this certificate to prove who you are and to encrypt traffic. Reporting Services stores that in two places, and they must match. This command writes both through the official RS interface, so they can’t drift apart.
If a different certificate is already bound to the same address and port, the command stops and tells you — unless you pass -Force, which replaces it. After binding, restart the RS service for it to take effect.
| Question | Answer |
|---|---|
| Outbound calls? | None. A WMI call to the local (or named) RS server. |
| What it changes | The SSL certificate binding for the endpoint (RS config + HTTP.sys). |
| Privileges | RS admin + local admin; WinRM for remote. |
| Manual-netsh avoided | Yes, including the conflict-replace path. |
| Dependency | Why | Required? |
|---|---|---|
| SSRS 2016+ or PBIRS | The service being configured. | Yes |
The certificate in LocalMachine\My, not expired |
The cert being bound. | Yes |
| An RS service restart | The binding takes effect on restart. | Yes |
- Writes through the official RS configuration API, keeping config and HTTP.sys atomically consistent — no
netshside-channel to reconcile. - The shared-IP:port behaviour is documented and surfaced, so a
-Forcereplacement’s full effect is understood rather than a surprise. - Refuses to silently overwrite a conflicting binding without
-Force, keeping certificate replacement an explicit, auditable action.