This site is an archive and is no longer updated.
    Back to ADCS Overview
    Windows ADCSSCEPNEW

    NDES (Network Device Enrollment Service)

    SCEP for Windows - Certificates for Devices That Can't Join AD

    12 min readDecember 2025
    LinkedInX
    NDES Network Device Enrollment Service showing SCEP connections from Cisco Router, Mobile Device, Firewall, and IoT Device

    What is NDES?

    Network Device Enrollment Service (NDES) is Microsoft's implementation of the SCEP (Simple Certificate Enrollment Protocol). It enables network devices, mobile devices, and other systems that cannot join Active Directoryto request and receive certificates from your ADCS infrastructure.

    Think of NDES as a translator: it speaks SCEP (a simple HTTP-based protocol) on one side to devices, and speaks Microsoft's certificate enrollment protocol on the other side to your CA.

    Want to understand SCEP first? Check out our interactive SCEP Protocol Demo to see how the protocol works step-by-step.

    What NDES Solves

    Normal ADCS autoenrollment (via Group Policy) requires devices to be domain-joined. But many devices can't or shouldn't join Active Directory:

    Normal Autoenrollment Requires

    • Windows device joined to AD
    • Domain computer account
    • Group Policy processing
    • Kerberos authentication

    NDES Provides

    • HTTP/HTTPS enrollment (no AD needed)
    • Challenge password authentication
    • Works with any SCEP-compatible device
    • Cross-platform support

    Common NDES Use Cases

    Cisco Devices

    Routers, switches, ASA firewalls, ISE for 802.1X

    Palo Alto

    Next-gen firewalls, GlobalProtect VPN

    Fortinet

    FortiGate firewalls, FortiClient VPN

    Microsoft Intune

    iOS, Android, macOS device certificates for Wi-Fi, VPN, email

    IoT Devices

    Printers, cameras, sensors, industrial equipment

    VPN Appliances

    Any VPN concentrator supporting SCEP

    NDES Architecture

    Click on any component to learn more:

    SCEP Request
    + Challenge Password
    Certificate Request

    Related: For details on CA hierarchy, see ADCS Architecture →

    Challenge Passwords

    NDES uses challenge passwords to authenticate enrollment requests. There are two modes:

    Single Password Mode

    One static password used for all enrollments. Easier but less secure.

    • Simple to configure
    • Works with devices that don't support OTP
    • Password reuse risk
    • If leaked, anyone can enroll
    HKLM\SOFTWARE\Microsoft\Cryptography\MSCEP
    UseSinglePassword = 1

    One-Time Password Mode

    Unique password generated for each enrollment. More secure, recommended for production.

    • Password valid for single use
    • Time-limited validity (default 60 min)
    • Audit trail per request
    • Requires admin to generate each password
    Access: https://ndes-server/certsrv/mscep_admin/

    Intune Note: Microsoft Intune uses the NDES Connector, which bypasses the challenge password entirely. Intune manages its own authentication between the connector and your NDES server.

    NDES + Intune

    Microsoft Intune uses NDES to provision certificates to managed mobile devices. The flow is different from traditional SCEP enrollment:

    Intune SCEP Enrollment Flow

    1. 1
      Device requests certificate

      Mobile device (iOS/Android) receives SCEP profile from Intune

    2. 2
      Intune validates the request

      Cloud service verifies device is compliant and managed

    3. 3
      NDES Connector receives request

      On-premises connector bridges Intune to NDES

    4. 4
      NDES requests certificate from CA

      Uses configured template for mobile devices

    5. 5
      Certificate delivered to device

      Device can now use cert for Wi-Fi, VPN, email

    mTLS with Mobile: Once devices have certificates, you can use them for mutual TLS authentication. See mTLS Demo →

    Common NDES Issues

    IssueCauseFix
    HTTP 500 on SCEP endpointNDES service account permissionsGrant account Request + Enroll on template
    "The certificate request failed"Template not published to CAAdd template to CA's certificate templates
    Challenge password rejectedPassword expired or already usedGenerate new OTP password
    "0x80094800" errorTemplate requires approvalRemove CA manager approval from template
    Intune connector offlineConnector service stopped or firewallRestart service, check 443 outbound to Intune
    Certificate has wrong subjectTemplate supplies subject from ADSet "Supply in the request" on template
    Pending request never completesCA requires manual approvalApprove in CA console or use auto-approve
    "No certificate templates available"NDES account missing permissionsAdd Read + Enroll to NDES service account

    Troubleshooting Tip: Enable NDES debug logging:

    certutil -setreg CA\Debug 0xFFFFFFFF

    Logs appear in %windir%\mscep.log

    Next Steps

    Related Resources