Log Dejargonizer

Windows System Log · Event 36871

Event 36871: Windows could not build a TLS credential

Schannel is the Windows component that does HTTPS and TLS. This event means it failed while preparing the credential for a connection — before any server was contacted. The internal error state number is the entire diagnostic, and 10013 means the two ends had no protocol in common.

Also written as Schannel 36871internal error state is 1001336871 tls error

What it means for you

On a personal computer

Windows failed to set up a secure connection for a program. If nothing on your PC is actually broken, you can leave it — this event is logged even when the program then retried and succeeded. If something specific cannot reach the internet, this is a clue about why.

For an analyst

The overwhelming cause in the field is a machine with TLS 1.0 and 1.1 disabled by a hardening baseline, talking to something that offers nothing newer, or the reverse — an application pinned to an old .NET default that never enables TLS 1.2. Note the direction: 'client credential' means this machine was the one connecting out, 'server credential' means it was accepting. Registry state under SCHANNEL\Protocols governs both, and .NET applications additionally need SchUseStrongCrypto or an explicit SecurityProtocol setting, which is why a machine can be configured correctly and an application still fail.

What it looks like

Sanitised. Addresses come from the RFC 5737 documentation ranges.

Sample
A fatal error occurred while creating a TLS client credential. The internal error state is 10013.

The fields that decide it

Everything else in the log line is context.

Client versus server credential
Which side this machine was on. 'Client' means it was making an outbound connection; 'server' means something was connecting to it. This decides where you look next.
Internal error state
The only diagnostic in the event.
  • 10013No shared protocol or cipher suite. The most common value by a wide margin and almost always a TLS version mismatch.
  • 10011A problem with the certificate itself — missing, expired, or without a usable private key.
  • 10001The credential could not be acquired at all, often a permissions problem on the private key.
  • 1205 or 1203The handshake was abandoned rather than failing on configuration.
The process involved
Not always present in the event, which is its main weakness. Correlate with the application's own log or a packet capture to find out what was connecting.
Registry state
Not a field, but where the answer lives: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols, with Enabled and DisabledByDefault values per protocol and per client/server role.

Ordinary reasons this happens

Most of the time it is one of these.

  • A hardening baseline disabled TLS 1.0 and 1.1 and something on the network still only offers those.
  • An older .NET application that defaults to TLS 1.0 running on a machine where only 1.2 and 1.3 are enabled.
  • A monitoring probe or scanner deliberately offering an old protocol to test whether it is accepted, which fails by design.
  • A device such as a printer or an appliance with firmware too old to negotiate a modern protocol.
  • A retry pattern where the first attempt fails and a second succeeds, so the event appears despite nothing being broken.

When it is not ordinary

An interception proxy inserted into the path presenting a certificate the client will not build a credential against.

What gives it awaySudden appearance of these errors across many machines at once, correlating with a network change nobody announced.

ATT&CK T1557

Malware falling back to an obsolete protocol because its command-and-control server is old or deliberately minimal.

What gives it awayFailures from an unfamiliar process, repeating on a fixed interval, to a destination with no business reason.

ATT&CK T1573

What to do next

  1. Read the internal error state. 10013 means protocol mismatch and takes you straight to configuration; anything else points at the certificate instead.
  2. Establish whether it says client or server credential. That halves the search immediately.
  3. Work out what was connecting. The event does not say, so use the application's own logs, or run a capture, or check what runs on the schedule the errors follow.
  4. Inspect the SCHANNEL\Protocols registry keys for both Client and Server subkeys of each TLS version. Half-configured states — Enabled set but DisabledByDefault also set — are extremely common.
  5. For .NET applications, check SchUseStrongCrypto under the .NETFramework keys. A correctly configured machine still fails if the application never asks for TLS 1.2.
  6. Confirm the far end actually supports a protocol you still allow before changing anything locally. Re-enabling TLS 1.0 to make an error go away undoes the hardening that caused it.
  7. If the errors are cosmetic — the connection succeeds on retry and nothing is broken — document that and leave the configuration alone.

Queries to run

powershell All Schannel events, since 36871, 36874 and 36888 tell a joined-up story and reading one alone is misleading.
Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Schannel'} -MaxEvents 100 | Select-Object TimeCreated, Id, Message | Format-List
powershell Dumps the actual protocol state. Half-configured keys are the usual cause and are invisible without this.
Get-ChildItem 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols' -Recurse | ForEach-Object { [PSCustomObject]@{ Path = $_.Name; Enabled = (Get-ItemProperty $_.PSPath).Enabled; DisabledByDefault = (Get-ItemProperty $_.PSPath).DisabledByDefault } }
kql A sudden fleet-wide spike usually means something changed on the network, not on the machines.
Event | where EventLog == 'System' and Source == 'Schannel' | summarize count() by EventID, Computer, bin(TimeGenerated, 1h) | order by count_ desc

Common questions

What does internal error state 10013 mean?

The two ends could not agree on a protocol or cipher suite. In practice it nearly always means this machine has old TLS versions disabled and whatever it was talking to offers nothing newer, or the other way round. It is a configuration mismatch, not a fault in Windows or in the certificate.

Should I re-enable TLS 1.0 to fix Event 36871?

Only as a last resort and only scoped to what needs it. Re-enabling an obsolete protocol machine-wide undoes the hardening that produced the error and reopens it for everything else on the box. Fix the far end where you can, and where you cannot, understand exactly which connection needs the exception before granting it.

Event 36871 appears but everything works. Can I ignore it?

Often yes. Many clients try a protocol, fail, and retry successfully with another — Schannel logs the failed attempt regardless. If no application is actually broken and the count is not growing, it is noise. What makes it worth chasing is a specific thing that stopped working at the same time the errors started.

How do I find out which program caused Event 36871?

The event does not name it, which is its biggest limitation. The practical approaches are to check the timing against scheduled tasks and services, to look at the application's own error log, or to capture traffic and match failed handshakes to a process. On a busy server, correlating with Sysmon network-connection events is the quickest route.

Read next

Vendor documentation

Last reviewed 6 September 2026