An SSTP client can complete TLS and still reject the user a second later. That sequence is not a bug, it is the protocol stack: transport security first, user authentication afterwards. Because the two stages fail with different messages, they also need different fixes. Reading which stage produced the error is most of the diagnosis.

A trusted certificate proves the endpoint; it says nothing about the account.

What the TLS handshake establishes

The client validates the server's presented certificate against its trust store, the requested hostname, the validity window and whatever additional policy the platform applies. That protects the connection to the intended endpoint. It does not prove that a particular account is enabled, unexpired or permitted to use remote access. Those are separate questions asked later by a different component.

This is why removing certificate checks to reach the login prompt is the wrong repair. You get a login prompt on a connection you cannot verify. A certificate error belongs to the hostname, the clock, the chain or the trust configuration.

What SSTP and PPP add on top

SSTP runs over HTTPS and carries PPP inside it, with its own control exchange around the connection. PPP then runs its link and authentication phases, and the authentication method depends on server policy and client capability. PAP, CHAP, MS-CHAPv2 and EAP are all PPP authentication options with very different properties. The VPN's user check is that PPP phase, not the TLS layer beneath it.

A user rejection can therefore mean credentials, an account restriction or a method mismatch.

The server-side reason is far more useful than resetting every secret in the profile. An account-disabled event and a method-negotiation failure look similar at the client and have nothing in common at the server.

Match the error to the stage

Check whether the connection reaches TLS, then the SSTP HTTP exchange, then the PPP phase. Keep log timestamps aligned across retries so an earlier failure is not confused with a later success. A client that logs two attempts in one window will otherwise look like it failed at the last stage it reached. Read the first relevant error, not the last line.

The same alignment matters on the server side, where the authentication record and the transport log are often separate files with separate clocks. Two minutes of skew is enough to make an obvious cause look impossible.

After login, authorization is still separate

A successful login does not grant every private resource. Routes determine what is reachable, DNS determines what resolves, and each service still applies its own permissions. A session showing connected is a statement about the tunnel, not about the file share. When a user can connect and cannot reach one host, the tunnel phase is already finished.

That is the same layering the handshake showed, one level up.

Keep account recovery with the operator's supported process rather than changing transport settings in response to an explicit user denial. Changing the transport to fix a disabled account is the kind of repair that appears to work when the account is re-enabled for an unrelated reason.

Pennadoù liammet