Skip to content

Support connecting to legacy Windows RDP targets (Windows Server 2008 R2 / TLS 1.0) #73

@Explorer1092

Description

@Explorer1092

Summary

agent-rdp connect fails with TLS error: Connection reset by peer (os error 54) when the target is Windows Server 2008 R2 (RDP 6.x era, TLS 1.0 only). macOS's built-in Windows App (MSRDC) and FreeRDP connect to the same host without issue, so the constraint is on IronRDP's client-side TLS negotiation.

Environment

  • agent-rdp 0.6.3 installed via npm
  • macOS 15 (Darwin 25.2.0), Apple Silicon
  • Target: Windows Server 2008 R2 SP2 (SQL Server 2008 R2 lab VM)
  • TCP 3389 reachable; handshake initiated normally

Repro

$ agent-rdp --json connect --host 172.16.20.211 --username Administrator --password '***'
{"success":false,"error":{"code":"connection_failed","message":"TLS error: Connection reset by peer (os error 54)"}}

nc -z 172.16.20.211 3389 succeeds. openssl s_client -connect host:3389 shows the server does not accept TLS 1.2+ client-hello handshake the way IronRDP emits it.

Context

Red-team / database-compat test labs very frequently ship Windows Server 2003/2008/2008 R2 VMs — they're the "legacy driver / legacy protocol" targets that these labs exist to cover in the first place. These hosts cannot be upgraded past TLS 1.0 without replacing the OS, and enabling NLA does not help when the underlying TLS is already incompatible. Today the README's "target must have NLA enabled" line effectively excludes this entire class of targets. Meanwhile Microsoft's own Windows App and FreeRDP connect fine.

Ask

Any of the following would unblock agent-based automation against legacy Windows:

  • Expose a --security-layer {nla,tls,rdp} (or equivalent) flag mapping to IronRDP's negotiation preferences so the "Standard RDP Security" fallback is reachable.
  • Opt-in --allow-legacy-tls flag permitting TLS 1.0 / legacy cipher suites.
  • Improve the error message to distinguish "peer rejected NLA/TLS 1.2+" from a generic Connection reset by peer — right now this failure mode reads as a network glitch.

Happy to test any patch against a live Windows Server 2008 R2 target.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions