인증서 서비스가 요청을 처리하지 못했습니다.
CA(인증 기관)의 주요 기능 중 하나는 클라이언트의 인증서 요청을 평가하는 것으로, 미리 정의된 조건을 충족할 경우에는 이러한 클라이언트에게 인증서를 발급합니다. 인증서 등록에 성공하려면 요청을 제출하기 전에 유효한 CA 인증서를 사용하는 CA, 올바르게 구성된 인증서 템플릿, 클라이언트 계정, 인증서 요청, 클라이언트가 CA에 요청을 제출하는 방법을 비롯한 여러 요소가 준비되어 있어야 하고 요청이 확인되면 발급된 인증서를 설치해야 합니다.
인증서 요청이 처리되지 않도록 하는 문제 해결
여러 가지 문제로 인해 인증서 요청이 처리되지 않을 수 있습니다. 이벤트 로그 메시지에 문제 해결에 필요한 정보가 없는 경우 이벤트 로그가 표시되기 전 또는 표시된 후 나타나는 추가 오류 및 경고를 보면 원인을 파악하는 데 도움이 될 수 있습니다.
인증서 요청 처리를 차단할 수 있는 문제를 파악하여 해결하려면 다음을 수행해야 합니다.
CA(인증 기관)에 대한 인증서 체인을 확인합니다.
새 CRL(인증서 해지 목록)을 생성하여 게시합니다.
구성된 CRL 배포 지점을 확인합니다.
이렇게 해도 문제가 해결되지 않으면 CA의 실패한 요청 큐에서 요청 실패 이유에 대한 정보를 확인하십시오.
다음 절차를 수행하려면 CA 관리 권한이 있거나 적절한 권한을 위임받아야 합니다.
CA에 대한 인증서 체인 확인
CA에 대한 인증서 체인을 확인하려면:
시작을 클릭하고 mmc를 입력한 다음 Enter 키를 누릅니다.
[사용자 계정 컨트롤] 대화 상자가 나타나면 표시되는 작업이 원하는 작업인지 확인한 다음 [계속]을 클릭합니다.
[파일] 메뉴에서 [스냅인 추가/제거], [인증서], [추가]를 차례대로 클릭합니다.
[컴퓨터 계정]을 클릭하고 [다음]을 클릭합니다.
CA를 호스트하는 컴퓨터를 선택하고 [마침]을 클릭한 다음 [확인]을 클릭합니다.
인증서 체인의 각 CA 인증서를 선택하고 인증서 보기를 클릭합니다.
세부 정보 탭을 클릭한 다음 파일에 복사를 클릭하여 인증서 내보내기 마법사를 시작합니다. 각 인증서의 확장명을 .cer로 저장합니다.
명령 프롬프트를 열고 각 CA 인증서에 대해 certutil -urlfetch -verify <CAcert.cer> 명령을 실행한 다음 <Enter> 키를 누릅니다. <CAcert.cer>을 7단계에 저장한 CA 인증서 파일 이름으로 바꿉니다.
CA에서 발급한 최종 엔터티(사용자 또는 컴퓨터) 인증서에 대해 인증서 파일과 동일한 명령을 사용하여 CA의 CRL과 체인을 확인합니다.
명령줄 출력에서 파악된 모든 문제를 해결합니다.
새 CRL 생성 및 게시
명령줄 출력에 CA에 대한 CRL이 만료되었다고 나타나면 이 CA에 대한 새 기준 및 델타 CRL을 생성하여 필요한 위치에 복사합니다. 이렇게 하려면 오프라인 CA를 다시 시작해야 할 수 있습니다.
CA에서 현재 게시된 CRL을 확인합니다. 기본적으로 CA는 %windir%\System32\CertSrv\CertEnroll 폴더에 CRL을 만듭니다. 현재 이 위치에 있는 CRL이 만료되었거나 유효하지 않은 경우 다음 절차에 따라 새 CRL을 게시할 수 있습니다.
인증 기관 스냅인을 사용하여 새 CRL을 게시하려면:
CA를 호스트하는 컴퓨터에서 [시작]을 클릭하고 [관리 도구]를 가리킨 다음 [인증 기관]을 클릭합니다.
CA를 선택하고 CA 이름 아래에 있는 폴더를 확장합니다.
해지된 인증서 폴더를 마우스 오른쪽 단추로 클릭합니다.
모든 작업을 클릭한 다음 게시를 클릭합니다.
CRL은 명령 프롬프트에서도 생성 및 게시할 수 있습니다.
Certutil 명령줄 도구를 사용하여 CRL을 게시하려면:
CA를 호스트하는 컴퓨터에서 [시작]을 클릭하고 cmd를 입력한 다음 <Enter> 키를 누릅니다.
certutil -CRL을 입력하고 Enter 키를 누릅니다.
CRL이 사용할 수 없다고 식별되었으나 CA의 로컬 디렉터리에 유효한 CRL이 있으면 CA가 CRL 배포 지점에 연결할 수 있는지 확인한 다음 이전 단계를 수행하여 CRL을 다시 생성한 다음 게시합니다.
다음 명령을 사용하면 CRL을 AD DS(Active Directory 도메인 서비스)에 수동으로 게시할 수 있습니다.
certutil -dspublish"<crlname.crl>" ldap:///CN=<CA 이름>,CN=<CA 호스트 이름>,CN=CDP,CN=Public Key Services,CN=Services,CN=Configuration,DC=<contoso>,DC=<com>?certificateRevocationList?base?objectClass=cRLDistributionPoint
crlname.crl을 CRL 파일 이름으로, <CA 이름> 및 <CA 호스트 이름>을 각각 CA 이름과 CA를 실행하는 호스트 이름으로, <contoso> 및 <com>을 Active Directory 도메인의 네임스페이스로 바꿉니다.
구성된 CRL 배포 지점 확인
게시에 성공했으며 네트워크에서 새 CRL을 사용할 수 있는지 구성된 CRL 배포 지점을 모두 확인합니다.
인증 기관 스냅인을 사용하여 구성된 CRL 배포 지점을 확인하려면:
CA를 호스트하는 컴퓨터에서 [시작]을 클릭하고 [관리 도구]를 가리킨 다음 [인증 기관]을 클릭합니다.
CA 이름을 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.
확장 탭을 클릭합니다.
구성된 CRL 배포 지점을 검토하여 정보가 올바른지 확인합니다.
Certutil을 사용하여 구성된 CRL 배포 지점 URL을 확인하려면:
CA에서 명령 프롬프트 창을 엽니다.
certutil -getreg ca\crlpublicationurls 명령을 입력하고 Enter 키를 누릅니다.
CA에서 실패한 요청 큐 확인
인증 기관 스냅인을 사용하여 CA에서 실패한 요청 큐를 확인하려면:
CA를 호스트하는 컴퓨터에서 시작을 클릭하고 관리 도구를 가리킨 다음 인증 기관을 클릭합니다.
Failed Requests 폴더를 클릭합니다.
이벤트 발생 시점 또는 그 근처에 제출된 실패한 요청을 살펴보고 요청 처리 메시지, 요청 상태 코드 및 요청자 이름과 같은 열에서 추가 진단 정보를 확인합니다.
Certutil을 사용하여 실패한 요청을 확인하려면:
CA를 호스트하는 컴퓨터에서 [시작]을 클릭하고 cmd를 입력한 다음 <Enter> 키를 누릅니다.
certutil -view LogFail을 입력하고 <Enter> 키를 누릅니다.
certutil -view -restrict requestID="<nnn>"을 입력하고 <Enter> 키를 누릅니다. <nnn>을 LogFail 명령 출력에서 실패한 요청 중 하나의 요청 ID로 바꿉니다.
인증서 요청 처리가 제대로 작동하는지 확인하려면:
시작을 클릭하고 certmgr.msc를 입력한 다음 Enter 키를 누릅니다.
사용자 계정 컨트롤 대화 상자가 나타나면 표시되는 작업이 원하는 작업인지 확인한 다음 계속을 클릭합니다.
콘솔 트리에서 개인을 두 번 클릭한 다음 인증서를 클릭합니다.
작업 메뉴에서 모든 작업을 가리킨 후 새 인증서 요청을 클릭하여 인증서 등록 마법사를 시작합니다.
마법사를 사용하면 사용 가능한 모든 유형의 인증서에 대한 인증서 요청을 만들고 제출할 수 있습니다.
인증서 설치 결과에서 등록이 성공적으로 완료되었고 보고된 오류가 없는지 확인합니다. 또한 세부 정보를 클릭하면 인증서에 대한 자세한 내용을 볼 수 있습니다.
Target | Microsoft.Windows.CertificateServices.CARole.2016 | ||
Category | EventCollection | ||
Enabled | True | ||
Event_ID | 22 | ||
Event Source | Microsoft-Windows-CertificationAuthority | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | High | ||
Remotable | True | ||
Alert Message |
| ||
Event Log | Application |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
DS | DataSource | Microsoft.Windows.EventProvider | Default |
Alert | WriteAction | System.Health.GenerateAlert | Default |
WriteToCertSvcEvents | WriteAction | Microsoft.Windows.CertificateServices.CARole.CertSvcEvents.Publisher | Default |
WriteToDB | WriteAction | Microsoft.SystemCenter.CollectEvent | Default |
<Rule ID="Microsoft.Windows.CertificateServices.CARole.2016.CertSvcEvents.22" Enabled="true" Target="CSDisc!Microsoft.Windows.CertificateServices.CARole.2016" ConfirmDelivery="true" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.EventProvider">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">22</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Microsoft-Windows-CertificationAuthority</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="WriteToDB" TypeID="SC!Microsoft.SystemCenter.CollectEvent"/>
<WriteAction ID="WriteToCertSvcEvents" TypeID="Microsoft.Windows.CertificateServices.CARole.CertSvcEvents.Publisher"/>
<WriteAction ID="Alert" TypeID="Health!System.Health.GenerateAlert">
<Priority>2</Priority>
<Severity>2</Severity>
<AlertMessageId>$MPElement[Name="AlertMessageID515b77767c984710bc8f71a810107927"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/EventDisplayNumber$</SuppressionValue>
<SuppressionValue>$Data/PublisherName$</SuppressionValue>
<SuppressionValue>$Data/LoggingComputer$</SuppressionValue>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>