Назад | Перейти на главную страницу

Службы сертификатов Active Directory не запускаются - ошибка 100

Я перенес свой корпоративный центр сертификации служб сертификации Active Directory на новый сервер (и с Windows 2003 R2 x86 на Windows 2008 R2 x64). У меня возникли проблемы с проверкой списков отзыва сертификатов, но я повторно опубликовал списки отзыва из корневого центра сертификации, и когда я запускаю certutil -urlfetch -verify, я больше не получаю никаких ошибок:

Verified Issuance Policies: None
Verified Application Policies: All
Cert is a CA certificate
Leaf certificate revocation check passed
CertUtil: -verify command completed successfully.

Но я все равно получаю те же ошибки, когда пытаюсь запустить CA. Я получаю следующее всплывающее окно:

Microsoft Active Directory Certificate Services
---------------------------
The system cannot find the file specified. 0x2 (WIN32: 2)

The policy module for a CA is missing or incorrectly registered. To view or change
policy module settings, right-click on the CA, click Properties, and then click the
Policy Module tab.
---------------------------
OK   

и я получаю в журнале следующую ошибку:

Log Name:      Application
Source:        Microsoft-Windows-CertificationAuthority
Date:          26/06/2012 15:59:45
Event ID:      100
Task Category: None
Level:         Error
Keywords:      Classic
User:          SYSTEM
Computer:      SRV112.cobbsch.cobbetts.co.uk
Description:
Active Directory Certificate Services did not start: Could not load or verify the current CA certificate.  Cobbetts LLP Enterprise CA The system cannot find the file specified. 0x80070002 (WIN32: 2).
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Microsoft-Windows-CertificationAuthority" Guid="{6A71D062-9AFE-4F35-AD08-52134F85DFB9}" EventSourceName="CertSvc" />
    <EventID Qualifiers="49754">100</EventID>
    <Version>0</Version>
    <Level>2</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2012-06-26T14:59:45.000000000Z" />
    <EventRecordID>852</EventRecordID>
    <Correlation />
    <Execution ProcessID="0" ThreadID="0" />
    <Channel>Application</Channel>
    <Computer>SRV112.cobbsch.cobbetts.co.uk</Computer>
    <Security UserID="S-1-5-18" />
  </System>
  <EventData Name="MSG_E_CA_CERT_INVALID">
    <Data Name="CACommonName">Cobbetts LLP Enterprise CA</Data>
    <Data Name="ErrorCode">The system cannot find the file specified. 0x80070002 (WIN32: 2)</Data>
  </EventData>
</Event>

У Microsoft есть документация по этой ошибке: http://technet.microsoft.com/en-us/library/cc774550(v=ws.10).aspx

Но в документации просто говорится о том, что цепочка CA не проверяет, как сейчас.

Мне было интересно, был ли это какой-то кешированный сбой или кешированная копия неправильного CRL (я перенёс корневой ЦС ранее, и мне пришлось повторно опубликовать CRL, прежде чем certutil проверит должным образом), поэтому я попытался перезагрузить, чтобы очистить тайники.

Это ничего не изменило.

Я также пробовал запустить Certutil как СИСТЕМУ, чтобы проверить, есть ли проблема с разрешениями, и это тоже не решило проблему.

[Для запуска в качестве системы: запустите psexec -i -s cmd.exe из командной строки с повышенными привилегиями, и он запустит командную строку как системную. Вы можете запустить whoami, чтобы проверить.]

Я решил эту проблему с помощью службы поддержки Microsoft, но я действительно не понимал, что они сделали для ее решения.

Выкопал заметки службы поддержки Microsoft в надежде, что они кому-то пригодятся:

  1. Мы обнаружили, что CRL в папке certenroll отсутствует для проверки статуса отзыва из корневого центра сертификации.
  2. Мы скопировали CRL из промежуточного центра сертификации в выдающий вспомогательный центр сертификации, но все равно получили ошибку.
  3. Как сказал инженер группы отладки, мы удалили и переустановили роли ADCS, но это не помогло.
  4. Наконец, мы обнаружили в реестре HKLM \ system \ CurrentControlSet \ Services \ Certsvc \ Configuration CertHash более старые значения для просроченных сертификатов.
  5. Удалил старые значения хэшей и заменили их знаками (-) и запустили службу сертификатов.
  6. Служба сертификатов успешно запущена.

У меня была такая же ошибка. Я использовал модуль безопасности оборудования от nCipher. ADCS не смог получить доступ к своему закрытому ключу. Похоже, что при запуске службы ADCS он проводит какую-то проверку среди проверяющих закрытый ключ. Итак, я настроил свой HSM соответствующим образом. Теперь работает !!!

Недавно я выполнил миграцию с 2003 на 2012 R2 и столкнулся с той же проблемой, которую вы описываете. Центр сертификации будет восстанавливать и запускать нормально, пока я не импортировал резервную копию реестра из старого центра сертификации.

После звонка в Microsoft и нескольких часов устранения неполадок мы нашли решение. Я не нашел эту страницу во время поиска в Google, но вот она:

Служба сервера сертификатов не запускается, и вы получаете сообщение об ошибке: данные недействительны. 0xd (Win32: 13) в центре сертификации на базе Windows 2003

В основном существует сертификат с истекшим сроком действия или сертификат, в котором отсутствует закрытый ключ в CAcerthash ключ реестра. В моем случае это был просроченный сертификат.

Чтобы решить проблему

  1. Откройте сертификат в mmc и выберите компьютер.

  2. Откройте хранилище личных сертификатов.

  3. Ищите сертификаты, на которых либо нет значка закрытого ключа, либо срок действия которых истек.

  4. Откройте сертификат и обратите внимание на отпечаток пальца в деталях. Вам нужно будет сопоставить это с отпечатками большого пальца на вашем CAcerthash реестр.

  5. После того, как у вас есть отпечатки пальцев, проверьте реестр сертификатов CA на наличие отсутствующего или просроченного отпечатка сертификата и замените значения отпечатка знаком минус -

  6. Сохраните ключ реестра и попытайтесь запустить центр сертификации.

Это сработало для меня, поэтому, надеюсь, кто-то еще сочтет это полезным.

Эта ошибка может возникнуть, если вы изменили SKU ОС. Например. перешел с 2003 Enterprise на 2008 R2 Standard. Вы не упоминаете артикул вместе с деталями ОС.

Если предположить, что это не так, то для устранения этой проблемы вам необходимо собрать следующие

  1. прокмон (http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx) запуска сервиса вместе с
  2. дамп реестра HKLM \ system \ currentcontrolset \ certsvc и
  3. журнал отладки certsvc. "certutil -setreg ca \ debug 0xffffffe3" включит журнал отладки в% SystemRoot% \ Certsrv.log

включите журнал отладки, запустите procmon и попытайтесь запустить службу. Остановите procmon при сбое запуска службы.

Если вы их где-нибудь поделитесь, я могу посмотреть.

Я столкнулся с аналогичной проблемой с подчиненным ЦС, который был обновлен с Windows 2008 R2 до 2012 R2. К счастью, я только что создал новый корневой центр сертификации с помощью Server 2012 R2, с которым я мог сопоставить параметры реестра. Оказалось, что некоторые значения в ключе HKLM \ system \ CurrentControlSet \ Services \ CertSvc \ Configuration \\ CSP обновленного компьютера не совпадают с компьютером 2012 R2. В частности, «CNGPublicKeyAlgorithm = RSA» отсутствовал, «Provider» необходимо было изменить на «Microsoft Software Key Storage Provider», а «ProviderType» необходимо изменить с 1 на 0. После внесения этих изменений службы сертификации смогли запуститься без ошибок.