The short answer
Remote Desktop warns you because Windows secured the connection with a certificate it issued to itself, and it replaces that certificate roughly every six months. A full Remote Desktop Services deployment exposes four separate certificate roles, and only the two that face outwards, RD Gateway and RD Web Access : normally need an issuer the public internet trusts. The other two can run on your own internal certificate authority. Everything else follows from one rule: the name inside the certificate has to be the name the client typed.
On this page
- Why Remote Desktop warns you in the first place
- The four certificate roles in an RDS deployment
- Which roles actually need a publicly trusted certificate?
- The certificate has to carry the name people type
- Why server01.company.local can't be certified
- Does a wildcard certificate work for RDS?
- One server, no RDS deployment: the common case
- Binding the certificate and checking your work
- Shorter lifetimes turn this into a recurring job
- FAQ
Why Remote Desktop warns you in the first place
The Remote Desktop service generates a certificate for itself the first time it starts, keeps it in the machine's Remote Desktop certificate store, and replaces it roughly every six months. Nothing vouches for that certificate except the server presenting it, so the client is right to say the identity of the remote computer cannot be verified. It is reporting a fact, not a fault.
That store is visible in the certificates snap-in for the computer account, under Remote Desktop rather than Personal. Deleting the certificate there does not remove the problem; Windows regenerates one on the next restart of the Remote Desktop Configuration service, or on the next reboot. This is also why the certificate occasionally reappears on servers where somebody thought they had cleaned it up.
The tick box on the warning dialog is the part that causes confusion later. It does not tell the client to trust your server. It records the thumbprint of one specific certificate as acceptable for one specific host, on one specific machine. The six-month rotation invalidates every one of those records at once, which is why the warning tends to arrive as a cluster of helpdesk tickets on one morning.
There is a second cost that rarely gets counted. Once users have been trained to click through a certificate warning twice a year, they will click through the one that matters. The warning is the only signal the client has that something has stepped between the user and the server, and a signal everybody ignores is not doing any work.
The four certificate roles in an RDS deployment
Deployment properties in Server Manager list four certificate roles: RD Gateway, RD Web Access, RD Connection Broker - Publishing, and RD Connection Broker - Enable Single Sign On. They are not four copies of one setting. Each one is validated by a client at a different moment, against a different name, and that is what decides whether a given role needs a certificate from a public certificate authority.
RD Gateway terminates the connection arriving from outside your network. It is the first thing an unmanaged laptop or a phone talks to, so its certificate is checked by a device whose trust store you have no influence over.
RD Web Access is an IIS site, and behaves like any other website: the certificate has to match whatever appears in the browser address bar, and any browser reaching it from outside will apply ordinary web rules to it.
RD Connection Broker - Publishing signs the RemoteApp and desktop connection files that get handed to clients, so that the client can confirm the shortcut it is about to launch came from your deployment and not from an email attachment.
RD Connection Broker - Enable Single Sign On covers the credential delegation that lets a user authenticate once rather than at every hop. On the client side this also depends on the TERMSRV service principal name being permitted in the credentials delegation Group Policy setting, which is a separate piece of configuration from the certificate itself.
Which roles actually need a publicly trusted certificate?
The two that unmanaged devices reach directly: RD Gateway, and RD Web Access when its page is published outside the network. The two Connection Broker roles can run on an internal certificate carrying the broker's own fully qualified domain name, which Microsoft's guidance supports for clients on Remote Desktop Connection 8.0 or later. The rule behind that split is simply which trust store gets consulted.
A certificate from your own Active Directory Certificate Services CA is not weaker cryptography. It is a certificate whose issuer is trusted by exactly the machines that received the root through Group Policy, which is every domain-joined desktop, and nothing else. A contractor's laptop, a personal iPad, an Android phone, a home PC: none of them have ever heard of your CA, and none of them can be persuaded to without an install step you have to talk somebody through.
| Certificate source | Trusted by | Sensible use in RDS |
|---|---|---|
| Windows self-signed | Nothing | A lab you are about to tear down |
| Internal CA | Domain-joined machines | Both Connection Broker roles; session hosts |
| Publicly trusted CA | Every current OS and browser | RD Gateway, and RD Web Access if published |
For the gateway, validation level is worth a moment's thought. A domain validated certificate encrypts identically and issues in minutes, which is all some deployments need. Where the gateway is the front door to a company's internal systems and is used by clients, contractors or auditors, an organisation validated certificate puts the verified company name in the certificate subject, which is the thing security questionnaires tend to ask about.
The certificate has to carry the name people type
A certificate proves a name, and the client checks it against the name it was asked to connect to. If users reach the gateway at rdgw.example.com, that name has to be in the certificate, regardless of what the server calls itself internally. This single rule accounts for most Remote Desktop certificate failures, and it is why a certificate that works perfectly for your website still throws a mismatch on the gateway.
Where it gets genuinely confusing is that one Remote Desktop session involves more than one name. The user types the external gateway name. The gateway then hands the session on to the Connection Broker, and the broker to a session host, both by internal names the user never saw and never typed. A certificate that carries only the external name answers the first question and none of the later ones.
The practical version: list every name a client is asked to validate during a connection, then decide which certificate covers each one. External names go on the public certificate. Internal names go on an internal certificate, or on the same certificate as additional subject alternative names if, and only if. Every one of those names is publicly certifiable. When you are gathering the names for a request, the CSR generation guide covers how they get into the signing request.
Why server01.company.local can't be certified
No publicly trusted certificate authority is permitted to issue a certificate for an internal server name or a reserved IP address. Under CA/Browser Forum guidance, issuance stopped on 1 November 2015 and any certificates already in the wild were to be revoked or blocked by 1 October 2016. A short hostname like RDSRV01, anything ending in .local, and addresses such as 192.168.1.50 are all outside what a public CA may certify, and no amount of paying changes that.
The reason is ownership. A public CA has to verify that the applicant controls the name, and nobody controls .local or RDSRV01. Thousands of organisations use those same strings at the same moment. A certificate for such a name would be valid on every one of those networks at once, which is the opposite of what a certificate is for.
The way out is to give the host a name in a domain you actually own, then use split-horizon DNS so that name resolves to the private address on the inside and to the gateway's public address from outside. Users type one name everywhere, the certificate matches it everywhere, and nothing about the server's private address is published. The guide to certificates for internal server names works through that arrangement and the alternatives in more detail.
Does a wildcard certificate work for RDS?
Yes, for names one level below the wildcard, which usually covers the externally facing roles neatly. A certificate for *.example.com secures rdgw.example.com and rdweb.example.com from one file, so a single purchase and a single renewal date handles both. That is a real operational saving on a deployment where the renewal is manual.
Two limits are worth knowing before you commit. A wildcard matches one label, so *.example.com does not cover rdgw.remote.example.com. A deeper name needs its own wildcard or its own entry. And the Best Practices Analyzer on the gateway has a long-standing habit of reporting a wildcard certificate as invalid while connections work perfectly well, which sends people looking for a fault that is not there.
If the deployment sits under one domain level and you would rather not manage several expiry dates, a wildcard certificate is usually the cheaper answer once you count the renewals rather than the sticker price. Where the names are scattered across domains, a multi-domain certificate listing them explicitly is the better fit.
One server, no RDS deployment: the common case
Most people hitting this problem do not have an RDS deployment at all. They have one Windows server that administrators reach over RDP, no gateway, no broker, no Server Manager certificate page. In that situation there is no graphical setting for the certificate, and the binding is made directly against the RDP listener instead.
Import the certificate into the computer account's Personal store first: not the user's store, which is the mistake that produces a working certificate the listener cannot see. Then set the listener's SSLCertificateSHA1Hash property to the certificate's thumbprint, a 40-character hexadecimal string with no spaces, on the Win32_TSGeneralSetting instance for the RDP-tcp terminal:
$tcp = Get-WmiObject -Class Win32_TSGeneralSetting `
-Namespace root\cimv2\TerminalServices -Filter "TerminalName='RDP-tcp'"
Set-WmiInstance -Path $tcp.__path `
-Argument @{ SSLCertificateSHA1Hash = "<40-character thumbprint>" }Microsoft's guidance notes the setting applies to new connections without a service restart, so you can make the change during the day without disconnecting anyone, including yourself. Open a second session to confirm before you close the first. That habit costs nothing and has saved a lot of out-of-hours travel.
Domain environments have a tidier route. The Group Policy setting for a server authentication certificate template, under the Remote Desktop Session Host security settings, points hosts at an internal CA template and lets them enrol and renew on their own. It only helps where the clients trust that internal CA, so it solves the domain-joined case and leaves the external one untouched.
Binding the certificate and checking your work
Three things have to be true before a client stops warning: the certificate is in the computer account's store with its private key attached, the name the client typed appears in the certificate, and the intermediate certificates are installed so the chain reaches a trusted root. Two of those are easy to confirm and the third is the one that usually gets missed.
A missing intermediate is a particularly unpleasant failure because it is inconsistent. Windows clients often cache intermediates from earlier connections elsewhere and validate the chain anyway, so the server looks fine from the admin's own desk and fails on a freshly imaged machine or a phone. If the gateway is reachable on 443, running it through the SSL checker shows the chain as a stranger sees it rather than as your workstation has learned to see it. Our explainer on certificate chains covers what to do when a link is missing.
For the RDP listener specifically, test from a machine that has never connected to that server before, and ideally one that is not domain-joined. That is the only test that distinguishes "the certificate is correct" from "this workstation has been told to accept it".
Shorter lifetimes turn this into a recurring job
Remote Desktop servers feel the certificate lifetime reduction harder than web servers do, because almost nobody automates the listener binding. Ballot SC-081v3, approved by the CA/Browser Forum in April 2025, set a schedule: a maximum of 200 days from 15 March 2026, 100 days from 15 March 2027, and 47 days from 15 March 2029. A gateway that needed attention once a year is heading for four to eight times a year.
The same ballot cut the reuse period for organisation details from 825 days to 398 days on 15 March 2026, so organisation validated certificates now need the company data revalidated more often as well. That does not change the technical work on the server, but it does change how far ahead you should start a renewal that depends on someone answering a verification call.
Two practical responses. Put the expiry date somewhere a person will see it, because an RDP listener gives no warning at all before it starts failing. The first symptom is users who cannot work. And where the gateway sits behind a load balancer or reverse proxy that already speaks ACME, terminating TLS there moves the renewal onto machinery that renews itself. Our guide to the 2027 automation requirements sets out where this is heading.
FAQ
Getting the certificate for your gateway
Once you know which name the gateway answers to and whether it sits under a single domain level, the purchase is straightforward. The product pages set out what each validation level asks for, so you can match the certificate to who is actually connecting before you order.
Compare certificates for a Remote Desktop gateway