HTTP 503

NDES returns HTTP 503 Service Unavailable

Last reviewed 2026-07-18 by the Just Software engineering team · also seen as ndes 503, service unavailable mscep

What it means

A 503 from the NDES endpoint (/certsrv/mscep/mscep.dll) means IIS accepted the connection but the SCEP application pool is not running. IIS disables an application pool automatically after repeated worker-process failures (rapid-fail protection), so a 503 usually indicates the pool crashed and was switched off — every device hitting the URL fails until it is fixed.

Common causes

  1. The SCEP application pool's identity (the NDES service account) has an expired or changed password, so the worker process cannot start.

  2. Rapid-fail protection disabled the pool after repeated crashes — often caused by expired NDES RA certificates or a broken policy module.

  3. The pool was stopped manually (or by patching/reboot ordering) and never restarted.

How to fix it

  1. In IIS Manager, check Application Pools: the SCEP pool must be Started. Start it and immediately watch whether it stops again — a pool that re-stops within seconds is crashing, not merely stopped.

  2. Reset/verify the NDES service account password and update it on the application pool identity (Application Pools > (pool) > Advanced Settings > Identity).

  3. Check the System and Application event logs on the NDES server for WAS/W3SVC events around the failure time — they name the crashing pool and the reason.

  4. Verify the NDES RA certificates (CEP Encryption, Exchange Enrollment Agent) in the computer certificate store have not expired; expired RA certs are the classic cause of a crash-looping NDES pool.

Frequently asked

Why did NDES stop working for everyone at the same time?
NDES is a single choke point: one stopped application pool, one expired RA certificate or one service-account password change breaks every SCEP enrolment simultaneously. Check the app pool state and RA certificate expiry first.
An unhandled error has occurred. Reload 🗙