Службы сертификации 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

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

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

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

Я также попытался запустить Certutil как SYSTEM, чтобы увидеть, была ли проблема с разрешениями, и это тоже не решило проблему.

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

5 ответов

Решение

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

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

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

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

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

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

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

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

Для того, чтобы решить проблему

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

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

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

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

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

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

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

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

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

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

  1. procmon ( 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 при сбое запуска службы.

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

Другие вопросы по тегам