1

Client Zertifikat auf einem Network Device Enrollment Service (NDES) mit installierten System Center Configuration Manager (SCCM) Policy Modul erneuern

In einem früheren Blogbeitrag habe ich beschrieben wie das automatische Verteilen von Zertifikaten in einer Microsoft Mobile Device Management Cloud/Onpremis Hybridumgebung konfiguriert werden muss.

Nach zwei Jahren wurden jedoch plötzlich keine Zertifikate mehr für Mobile Endgeräte ausgestellt. Da die Funktionalität weitestgehend PKI basierend ist habe ich zunächst die CAPI2 Logs auf den in der Kommunikation beteiligten Servern aktiviert (NDES, SCCM, Client).


Auf dem NDES Server konnte ich beim Reproduzieren der automatischen Zertifikatsanforderung schließlich die Ereignis IDs 30 und 11 finden:

Event xmlns=“http://schemas.microsoft.com/win/2004/08/events/event„>
<System> 

  <Provider Name=“Microsoft-Windows-CAPI2 Guid=“{5bbca4a8-b209-48dc-a8c7-b23d3e5216fb}“ />

  <EventID>30</EventID>

  <Version>0</Version>

  <Level>2</Level>

  <Task>30</Task>

  <Opcode>0</Opcode>

  <Keywords>0x4000000000000001</Keywords>

  <TimeCreated SystemTime=“2015-08-21T21:31:32.502150700Z“ />

  <EventRecordID>84</EventRecordID>

  <Correlation />

  <Execution ProcessID=“584 ThreadID=“604“ />

  <Channel>Microsoft-Windows-CAPI2/Operational</Channel>

  <Computer>NDES-Server.domain.com</Computer>

  <Security UserID=“S-1-5-21-1972785607-1531977173-2068054413-106082“ />

<UserData> 

<CertVerifyCertificateChainPolicy>

  <Policy type=“CERT_CHAIN_POLICY_SSL constant=“4“ /> 

  <Certificate fileRef=“5D87837BACC9486B3A879B8AB40F18ADCBD656FF.cer subjectName=“NDES-Server.domain.com“ />

  <CertificateChain chainRef=“{58E5A807-2E20-4407-971A-BC07FD30242A}“ />

  <Flags value=“0“ />

<SSLAdditionalPolicyInfo authType=“server„>

  <IgnoreFlags value=“280 SECURITY_FLAG_IGNORE_REVOCATION=“true SECURITY_FLAG_IGNORE_WRONG_USAGE=“true“ />

  </SSLAdditionalPolicyInfo> 

  <Status chainIndex=“0 elementIndex=“0“ />

  <EventAuxInfo ProcessName=“lsass.exe impersonateToken=“S-1-5-21-1972785607-1531977173-2068054413-106082“ />

  <CorrelationAuxInfo TaskId=“{F5DE2ECC-8DD8-411B-8669-29B9145E4B7E} SeqNumber=“1“ />

  <Result value=“800B0101„>A required certificate is not within its validity period when verifying against the current system clock or the timestamp in the signed file.</Result>

  </CertVerifyCertificateChainPolicy>

  </UserData>

  </Event> 

<Event xmlns=“http://schemas.microsoft.com/win/2004/08/events/event„>

<System>

  <Provider Name=“Microsoft-Windows-CAPI2 Guid=“{5bbca4a8-b209-48dc-a8c7-b23d3e5216fb}“ />

  <EventID>11</EventID>

  <Version>0</Version>

  <Level>2</Level>

  <Task>11</Task>

  <Opcode>2</Opcode>

  <Keywords>0x4000000000000003</Keywords>

  <TimeCreated SystemTime=“2015-08-21T21:34:59.073849200Z“ />

  <EventRecordID>91</EventRecordID>

  <Correlation />

  <Execution ProcessID=“584 ThreadID=“2784“ />

  <Channel>Microsoft-Windows-CAPI2/Operational</Channel>

  <Computer>NDES-Server.domain.com</Computer>

  <Security UserID=“S-1-5-21-1972785607-1531977173-2068054413-106082“ />

  </System>

<UserData>

<CertGetCertificateChain>

  <Certificate fileRef=“5D87837BACC9486B3A879B8AB40F18ADCBD656FF.cer“ subjectName=“NDES-Server.domain.com“ />

  <ExtendedKeyUsage />

  <Flags value=“0“ />

  <ChainEngineInfo context=“user“ />

<CertificateChain chainRef=“{B19DB0AE-A1EC-469F-8C89-1389D6FC51AE}„>

<TrustStatus>

  <ErrorStatus value=“1 CERT_TRUST_IS_NOT_TIME_VALID=“true“ />

  <InfoStatus value=“100 CERT_TRUST_HAS_PREFERRED_ISSUER=“true“ />

  </TrustStatus>

<ChainElement>

  <Certificate fileRef=“5D87837BACC9486B3A879B8AB40F18ADCBD656FF.cer subjectName=“NDES-Server.domain.com“ />

  <SignatureAlgorithm oid=“1.2.840.113549.1.1.5 hashName=“SHA1 publicKeyName=“RSA“ />

  <PublicKeyAlgorithm oid=“1.2.840.113549.1.1.1 publicKeyName=“RSA publicKeyLength=“1024“ />

<TrustStatus>

  <ErrorStatus value=“1 CERT_TRUST_IS_NOT_TIME_VALID=“true“ />

  <InfoStatus value=“102 CERT_TRUST_HAS_KEY_MATCH_ISSUER=“true CERT_TRUST_HAS_PREFERRED_ISSUER=“true“ />

  </TrustStatus>

<ApplicationUsage>

  <Usage oid=“1.3.6.1.5.5.7.3.2 name=“Client Authentication“ />

  </ApplicationUsage>

  <IssuanceUsage />

  </ChainElement>

<ChainElement>

  <Certificate fileRef=“03924C0F96F4FE488E1EBCD04F7DBA00C5FB4A00.cer subjectName=“Issuing-CA-01“ />

  <SignatureAlgorithm oid=“1.2.840.113549.1.1.5 hashName=“SHA1 publicKeyName=“RSA“ />

  <PublicKeyAlgorithm oid=“1.2.840.113549.1.1.1 publicKeyName=“RSA publicKeyLength=“2048“ />

<TrustStatus>

  <ErrorStatus value=“0“ />

  <InfoStatus value=“102 CERT_TRUST_HAS_KEY_MATCH_ISSUER=“true CERT_TRUST_HAS_PREFERRED_ISSUER=“true“ />

  </TrustStatus>

  <ApplicationUsage any=“true“ />

  <IssuanceUsage />

  </ChainElement>

<ChainElement>

  <Certificate fileRef=“A474E335E45BF0A22C28F76D63DB3D1BD4225C36.cer subjectName=“Root-CA“ />

  <SignatureAlgorithm oid=“1.2.840.113549.1.1.5 hashName=“SHA1 publicKeyName=“RSA“ />

  <PublicKeyAlgorithm oid=“1.2.840.113549.1.1.1 publicKeyName=“RSA publicKeyLength=“4096“ />

<TrustStatus>

  <ErrorStatus value=“0“ />

  <InfoStatus value=“10C CERT_TRUST_HAS_NAME_MATCH_ISSUER=“true CERT_TRUST_IS_SELF_SIGNED=“true CERT_TRUST_HAS_PREFERRED_ISSUER=“true“ />

  </TrustStatus>

  <ApplicationUsage any=“true“ />

<IssuanceUsage>

  <Usage oid=“1.3.6.1.4.1.36013.509.1.1“ />

  </IssuanceUsage>

  </ChainElement>

  </CertificateChain>

  <EventAuxInfo ProcessName=“lsass.exe impersonateToken=“S-1-5-21-1972785607-1531977173-2068054413-106082“ />

  <CorrelationAuxInfo TaskId=“{D9BB5151-5F96-41F4-A806-02513EE2E7AB} SeqNumber=“3“ />

  <Result value=“800B0101„>A required certificate is not within its validity period when verifying against the current system clock or the timestamp in the signed file.</Result>

  </CertGetCertificateChain>

  </UserData>

  </Event>   

Der Fehlertext (Result value) gibt an das ein Zertifikat ungültig ist. Beim ersten Blick in die MMC konnte ich jedoch kein abgelaufenes Zertifikat finden. Auf den zweiten Blick entdeckte ich jedoch, dass das Zertifikat für die „Clientauthentifizierung“ automatisch durch die Steuerung von Gruppenrichtlinien erneuert wurde. Dieses automatisch erneuerte Zertifikat verwendete ich bei der Konfiguration des SCCM Policy Moduls welches auf dem NDES Server installiert wurde. Das Zertifikat hatte beim Erneuern einen neuen „Thumbprint“ erhalten. Nach einem Blick in den „NDES.log konnte ich feststellen das für die Zertifikatsanforderung das Zertifikat mit dem vorherigen „Thumbprint“ verwendet wurde.

Doch wie kann der Zertifikats Thumbprint des SCCM Policy Moduls geändert werden? Der zu verwendende Thumbprint kann über die Registrierung geändert werden:

HKLMSOFTWAREMicrosoftCryptographyMSCEPModulesNDESPolicyNDESCertThumbprint


Der „Internet Information Service (IIS)“ muss nach der Änderung neu gestartet werden um das neue Zertifikat zu verwenden.

Referenz:

https://technet.microsoft.com/en-us/library/dn464311.aspx?f=255&MSPPError=-2147217396

beuermann

One Comment

Schreibe einen Kommentar