12

Windows Server 2012 및 IIS 8.5를 사용하고 있습니다. 웹 사이트에 대해 SSL을 설정했으며 SSL 설정은 Require Required와 Require Client Certificates입니다.IIS 8.5 - 403.16 오류로 상호 인증서 인증이 실패합니다.

서버에 보내는 클라이언트 인증서가 자체 서명 된 기관 (MyCompany CA라고 부름)에서 발급되었습니다. MyCompany CA 인증서가 로컬 컴퓨터 계정 - 신뢰할 수있는 루트 인증 기관에 성공적으로 설치되었습니다. 만료 날짜는 2039이며 클라이언트 인증서 만료 날짜도 있습니다.

그러나이 모든 설정으로 403.16 오류가 발생합니다. 나는 규칙을 실패한 요청 추적을 활성화하고 잘못된 요청을 기록 관리하고 그것에 대해 몇 가지 추가 세부 사항을 가지고 :

52.- MODULE_SET_RESPONSE_ERROR_STATUS - IIS 웹 코어 알림 - - MODULENAME 경고 BEGIN_REQUEST HttpStatus - 403 HttpReason을 - 금지 된 코드 HttpSubStatus - 16 ErrorCode - 처리되었지만 트러스트 공급자가 트러스트하지 않은 루트 인증서에서 종료 된 인증서 체인. (0x800b0109) ConfigExceptionInfo

결과 403.16과 오류 코드 0x800b0109와 관련하여 여러 사이트를 확인했으며 모두 로컬 컴퓨터 - 신뢰할 수있는 루트 인증 기관에 설치되지 않은 인증 기관을 가리키고 있지만 그 경우는 아닙니다.

감사합니다.

답변

40

저는 오랫동안이 작업을 해왔고 마침내 발견했습니다! , 웹 페이지를 새로 고침이

인증서를 선택하고 마술을 볼 수 : REG_DWORD 값 데이터 : ClientAuthTrustMode 값 종류 :

은 컨트롤 \ SecurityProviders \ SCHANNEL 값 이름 \ CURRENTCONTROLSET \ HKEY_LOCAL_MACHINE을 \ 시스템에 새 키를 추가 우연히 있다.

연구

윈도우 8 사용 및 IIS 8.5은 여기 http://itq.nl/testing-with-client-certificate-authentication-in-a-development-environment-on-iis-8-5/의 지시를 따랐다.

인증서가 올바른 위치에 만들어졌으며 IIS에서 올바르게 구성되었지만 403.16 오류가 계속 발생했습니다.

많은 MSDN 기사 및 다른 시도가 실패한 후 다음 레지스트리 설정을 발견했습니다.CURRENTCONTROLSET \

설정 HKEY_LOCAL_MACHINE을 \ 시스템 컨트롤 \ SecurityProviders \ SCHANNEL 값 이름 : \ ClientAuthTrustMode 값 종류 : REG_DWORD 값 데이터 : 컨트롤 \ SecurityProviders \ SCHANNEL 값 이름 \ CURRENTCONTROLSET \ 2

설정 HKEY_LOCAL_MACHINE을 \ 시스템 : SendTrustedIssuerList 값 종류 : REG_DWORD 값 데이터 : 0

여기

이 특정 설정에 대한 좀 더 많은 정보가있다 (거짓, 또는 완전히이 키를 삭제) (여기에서 찾을 : http://technet.microsoft.com/en-us/library/hh831771.aspx)

트러스트 모드의 기본값 Schannel 공급자가 지원하는 클라이언트 인증 트러스트 모드는 세 가지가 있습니다. 트러스트 모드는 클라이언트 인증서 체인 유효성 검사를 수행하는 방법을 제어하며 HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ Schannel 아래의 REG_DWORD "ClientAuthTrustMode"에 의해 제어되는 시스템 전체 설정입니다.

0 컴퓨터 신뢰 (기본값) 신뢰할 수있는 발급자 목록의 인증서에서 클라이언트 인증서를 발급 받아야합니다.

1 독점 루트 트러스트 호출자가 지정한 신뢰할 수있는 발급자 저장소에 포함 된 루트 인증서에 클라이언트 인증서 체인을 연결해야합니다. 또한 신뢰할 수있는 발급자 목록의 발급자가 인증서를 발급해야합니다.

2 독점 CA 트러스트 호출자가 지정한 신뢰할 수있는 발급자 저장소의 중간 CA 인증서 또는 루트 인증서에 대한 클라이언트 인증서 체인이 필요합니다. 신뢰할 수있는 발급자 구성 문제로 인한 인증 실패에 대한 자세한 내용은 기술 자료 문서 280256을 참조하십시오.

이 정보가 도움이되기를 바랍니다.

+1

클라이언트 인증 발급자 저장소에 인증서를 추가 한 후 재부팅해야했습니다. YMMV. – Timores

+0

2012 년에 내 문제를 해결 한이 답변 외에도 Windows Server 2008 R2/IIS 7.5에서도이 작업을 수행해야했습니다. 문제에 대한 설명과 그 상자에서 403.16 대신 403.7을 얻는다는 사실을 기반으로해서 나는 차이를 만들 것이라고 생각했지만 그렇지 않았습니다. 감사! – rusty

+1

ClientAuthTrustMode 값 종류 : REG_DWORD 값 데이터 : 2 - Windows 2012 R2에서 작동하지 않습니다. 그래도 403.16 오류가 발생합니다 – mit

1

ClientAuthTrustMode 설정을 적용하려면 서버를 재부팅해야했습니다.

0

나는 위에 제안 된 해결책을 시도했으며 정상적으로 작동합니다.

레지스트리를 편집 포함하지 않는 대체 솔루션 :

https://support.microsoft.com/en-us/help/2795828/lync-server-2013-front-end-service-cannot-start-in-windows-server-2012

이 문서에서 주요 포인트는 로컬 컴퓨터 신뢰할 수있는 루트 폴더에서 모든 비 서명 된 인증서를 제거하는 것입니다.

그룹 정책을 사용하여 인증서를 배포하는 경우 신뢰할 수있는 루트 인증 기관 저장소에는 인증서 속성 "제목"이 인증서 속성 "발급자"와 동일한 인증서 인 자체 서명 된 인증서 만 포함되어 있는지 확인하십시오.). 자체 서명되지 않은 인증서를 신뢰할 수있는 루트 인증 기관 저장소에서 중개 인증 기관 저장소로 이동합니다.

수동으로 새 인증서를 가져 오는 경우, 당신은 컴퓨터의 신뢰할 수있는 루트 인증 기관이 자체 서명 인증서를 저장하는 선택 있는지 확인하고 컴퓨터의 중간 인증 기관이 자체 서명하지 않은 인증서를 저장 인증서.

당신은 PowerShell 스크립트를 사용하여 모든 비 자체 서명 된 인증서를 찾을 수 있습니다

Get-Childitem cert:\LocalMachine\root -Recurse | Where-Object {$_.Issuer -ne $_.Subject} | Format-List * | Out-File "c:\computer_filtered.txt" 

이동은 중개 인증 기관에 그 인증서 표시는 MMC에서 폴더.

+0

http://stackoverflow.com/a/35001970/237568의 유사한 줄에 대한 좋은 대답에는 비 자체 서명 인증서를 중개 인증 기관 폴더로 이동시키는 PowerShell 한 줄자가 포함되어 있습니다. –