If your clients are not able to get certificates from your NDES server then you might have expired NDES certificates.
confirm this by going to https://ndesmydomain.org/CertSrv/mscep_admin/ and see a 500 error.
See entries on your NDES server Application log like:
The Network Device Enrollment Service cannot retrieve one of its required certificates (0x80070057). The parameter is incorrect.
Look in the local machine certificate store and find that 2 certificates with the CEP Encryption and Exchange Enrollment Agent (Offline request) are expired.
First copy the subject from your expired certificate. It should be in DN form (E=email,CN=yourserver-MSCEP-RA, etc)
The CEP Encryption Template is easy, just right click and either request new or renew the certificate. Supply the Subject when asked. The new certificate should appear in your Certificates list.
The Enrollment Agent certificate is a user certificate and so cannot be renewed through mmc without jumping through a lot of hoops, so we can use certutil.
create a folder and place a txt file called newEACert.txt or something similar with these contents:
[Version]
Signature="$Windows NT$"
[NewRequest]
MachineKeySet=TRUE
Subject="<Your Subject>"
Exportable = TRUE
[RequestAttributes]
CertificateTemplate = "EnrollmentAgentOffline"
Run a shell as administrator, enter the directory you created and run these commands:
CertReq.exe -New newEACert.txt Certnew.req
CertReq.exe -Submit Certnew.req Certnew.cer
CertReq.exe -Accept Certnew.cer
You should now see the Exchange Enrollment Certificate in your store.
reset iis iisreset and refresh the mscep_admin page and you should no longer see the 500 error. Client should now be able to get certificates from NDES.