Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

PEAP-MSCHAPv2 with ISE and C9800

PEAP — Protected Extensible Authentication Protocol

ISE uses a certificate, the clients authenticate with a username and password against active directory.

It has two phases:

  • Phase 1 builds a TLS tunnel, much like the HTTPS handshake. The client validates ISE’s server certificate but does not present one of its own.

  • Phase 2 runs a second, inner EAP conversation — EAP-MSCHAPv2 — entirely inside that tunnel, so the username and the challenge/response are encrypted on the wire.

The outer identity in Phase 1 can be anonymous (e.g. anonymous); the real username is only sent inside the tunnel in Phase 2.

sequenceDiagram
    autonumber
    participant C as Wireless Client
    participant AP as Access Point
    participant WLC as Catalyst 9800 WLC
    participant ISE as Cisco ISE / RADIUS

    C->>AP: Associate to WLAN
    Note over C,AP: Data blocked until 802.1X completes

    rect rgba(128, 160, 255, 0.12)
        Note over C,ISE: Phase 1 — Identity + TLS tunnel (cleartext)
        WLC->>C: EAP-Request/Identity
        C->>WLC: EAP-Response/Identity (outer / anonymous)
        WLC->>ISE: RADIUS Access-Request (outer identity)
        ISE->>WLC: Access-Challenge (EAP-Request/PEAP Start)
        WLC->>C: EAP-Request/PEAP (Start)
        C->>WLC: EAP-Response/PEAP (TLS ClientHello)
        WLC->>ISE: Access-Request (ClientHello)
        ISE->>WLC: Access-Challenge (ServerHello, Certificate,<br>ServerKeyExchange, ServerHelloDone)
        WLC->>C: EAP-Request/PEAP (server handshake)
        Note over C: Validate ISE server cert
        C->>WLC: EAP-Response/PEAP (ClientKeyExchange,<br>ChangeCipherSpec, Finished)
        WLC->>ISE: Access-Request (client handshake)
        ISE->>WLC: Access-Challenge (ChangeCipherSpec, Finished)
        WLC->>C: EAP-Request/PEAP (tunnel established)
    end

    rect rgba(120, 200, 140, 0.14)
        Note over C,ISE: Phase 2 — Inner EAP-MSCHAPv2 (encrypted inside TLS tunnel)
        ISE-->>C: Inner EAP-Request/Identity
        C-->>ISE: Inner EAP-Response/Identity (real username)
        ISE-->>C: Inner EAP-Request/MSCHAPv2 (Challenge)
        C-->>ISE: Inner EAP-Response/MSCHAPv2 (Peer Challenge + NT Response)
        Note over ISE: Validate against Active Directory
        ISE-->>C: Inner EAP-Request/MSCHAPv2 (Success + Authenticator Response)
        C-->>ISE: Inner EAP-Response/MSCHAPv2 (ack)
        ISE-->>C: Inner EAP-Request/Extensions (Result TLV = success)
        C-->>ISE: Inner EAP-Response/Extensions (Result TLV = success)
    end

    rect rgba(128, 160, 255, 0.12)
        Note over C,ISE: Completion
        ISE->>WLC: Access-Accept (MSK)
        WLC->>C: EAP-Success
        Note over C,AP: 802.11 4-Way Handshake (M1/M2/M3/M4)
        AP->>C: WLAN access allowed
    end

References

Demystifying PEAP-MSCHAPv2 Packet Flow with Wireshark - Cisco Community

Catalyst 9800 Software Configuration Guide - 802.1x Support (EAP-TLS and EAP-PEAP) - Cisco

RFC 2759: Microsoft PPP CHAP Extensions, Version 2 (MSCHAPv2) | RFC Editor

Last Modified • Saturday, July 25, 2026. 12:27 am UTC+00:00 • Commit: 38b772d