Я перенес свой корпоративный центр сертификации служб сертификации 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 в надежде, что они кому-то пригодятся:
У меня была такая же ошибка. Я использовал модуль безопасности оборудования от nCipher. ADCS не смог получить доступ к своему закрытому ключу. Похоже, что при запуске службы ADCS он проводит какую-то проверку среди проверяющих закрытый ключ. Итак, я настроил свой HSM соответствующим образом. Теперь работает !!!
Недавно я выполнил миграцию с 2003 на 2012 R2 и столкнулся с той же проблемой, которую вы описываете. Центр сертификации будет восстанавливать и запускать нормально, пока я не импортировал резервную копию реестра из старого центра сертификации.
После звонка в Microsoft и нескольких часов устранения неполадок мы нашли решение. Я не нашел эту страницу во время поиска в Google, но вот она:
В основном существует сертификат с истекшим сроком действия или сертификат, в котором отсутствует закрытый ключ в CAcerthash
ключ реестра. В моем случае это был просроченный сертификат.
Чтобы решить проблему
Откройте сертификат в mmc
и выберите компьютер.
Откройте хранилище личных сертификатов.
Ищите сертификаты, на которых либо нет значка закрытого ключа, либо срок действия которых истек.
Откройте сертификат и обратите внимание на отпечаток пальца в деталях. Вам нужно будет сопоставить это с отпечатками большого пальца на вашем CAcerthash
реестр.
После того, как у вас есть отпечатки пальцев, проверьте реестр сертификатов CA на наличие отсутствующего или просроченного отпечатка сертификата и замените значения отпечатка знаком минус -
Сохраните ключ реестра и попытайтесь запустить центр сертификации.
Это сработало для меня, поэтому, надеюсь, кто-то еще сочтет это полезным.
Эта ошибка может возникнуть, если вы изменили SKU ОС. Например. перешел с 2003 Enterprise на 2008 R2 Standard. Вы не упоминаете артикул вместе с деталями ОС.
Если предположить, что это не так, то для устранения этой проблемы вам необходимо собрать следующие
включите журнал отладки, запустите 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. После внесения этих изменений службы сертификации смогли запуститься без ошибок.