2013-02-11 8 views
6

클라이언트 인증서를 사용하여 Azure Cloud Service 웹 역할에 대한 요청을 인증해야합니다. 인증 기관 (CA) 루트 인증서을 신뢰할 수있는 저장소에 저장하는 방법? 하지만 때로는 ...Azure의 클라이언트 인증서 인증 및 CA 인증서

<Certificate name="RootCA" storeLocation="LocalMachine" storeName="AuthRoot" /> 

정말로 이상한 것은 그것이 작동한다는 것입니다 :

나는 AuthRoot 상점 이름으로 서비스 정의 파일에 정의 다음 관리 포털에 업로드하려고합니다. 인스턴스 재부팅 후에 작동하지만 서비스 업데이트 또는 다른 인스턴스 재부팅 후에 작동하지 않을 수 있습니다. Azure에서 벌레처럼 보입니다.

"작품"이라고 말하면 서버가 클라이언트 인증서를 성공적으로 수락하고 요청을 처리합니다. "작동하지 않는다"는 말은 서버가 인증서 확인 후 "요청이 중단되었습니다 : SSL/TLS 보안 채널을 만들지 못했습니다."라는 메시지가 표시되면 서버가 연결을 협상하지 않는다는 의미입니다. 클라이언트 쪽에서 예외가 throw됩니다.

안정적인 작동 방법?

UPD :

는 (소스 샤넬입니다) 시스템 Windows 이벤트 로그에서이 기록을 찾았

클라이언트 인증을 요구,이 서버가 신뢰할 수있는 인증 기관의 목록을 보냅니다 클라이언트. 클라이언트는이 목록을 사용하여 서버에서 신뢰하는 클라이언트 인증서를 선택합니다. 현재이 서버는 많은 인증서 기관을 신뢰하므로 목록이 너무 길어졌습니다. 따라서이 목록은 잘 렸습니다. 이 컴퓨터의 관리자는 클라이언트 인증을 위해 인증 된 인증 기관을 검토하고 을 신뢰할 필요가없는 인증 기관을 제거해야합니다.

답변

6

정확한 문제는 여기 http://support.microsoft.com/kb/2801679에 설명되어 있습니다.

2012 년 12 월 Windows Update 후에 많은 인증서가 AuthRoot 저장소에 추가되었습니다. 그래서 우리는 문제를 해결하기 위해 그것을 제거해야합니다. ServiceDefinition.csdef

PowerShell -ExecutionPolicy Unrestricted .\Startup.ps1 
exit /b %errorlevel%  

을 그리고에 :

Get-ChildItem -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SystemCertificates\AuthRoot\Certificates | Where-Object {$_.Name -notlike "*\<YOUR_CERTIFICATE_THUMBPRINT>"} | Remove-Item 

은 CMD 시작 작업에서 실행하려면 :

<WebRole name="Web"> 
    <Startup> 
    <Task commandLine="Startup.cmd" executionContext="elevated" taskType="simple" /> 
    </Startup> 
    <!-- ... -> 
</WebRole> 

내가 PowerShell을 시작 작업을 사용하여 만들려면