누구나 액세스하기 위해 클라이언트 인증서를 요구하도록 IIS Express를 구성하는 방법을 알고 있습니까? 인증에 클라이언트 인증서를 사용하는 문제가있는 ASP.NET 응용 프로그램을 디버깅하려고합니다.
누구나 액세스하기 위해 클라이언트 인증서를 요구하도록 IIS Express를 구성하는 방법을 알고 있습니까? 인증에 클라이언트 인증서를 사용하는 문제가있는 ASP.NET 응용 프로그램을 디버깅하려고합니다.
답변:
IIS 관리자 도구를 사용하고 Microsoft 문서 IIS 클라이언트 인증서 매핑 인증 <iisClientCertificateMappingAuthentication>을 따르십시오 .
샘플 구성 :
<location path="Default Web Site">
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="false" />
<anonymousAuthentication enabled="false" />
<digestAuthentication enabled="false" />
<basicAuthentication enabled="false" />
<iisClientCertificateMappingAuthentication enabled="true"
manyToOneCertificateMappingsEnabled="true">
<manyToOneMappings>
<add name="Contoso Employees"
enabled="true"
permissionMode="Allow"
userName="Username"
password="[enc:AesProvider:57686f6120447564652c2049495320526f636b73:enc]">
<rules>
<add certificateField="Subject"
certificateSubField="O"
matchCriteria="Contoso"
compareCaseSensitive="true" />
</rules>
</add>
</manyToOneMappings>
</iisClientCertificateMappingAuthentication>
</authentication>
<access sslFlags="Ssl, SslNegotiateCert" />
</security>
</system.webServer>
</location>
다음은 Jason Shavers가 블로그에서 전달한 지침입니다. (그러나 해당 페이지는 더 이상 존재하지 않습니다.) Scott Hanselman은 http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx 에서 SSL 활성화에 대해 설명합니다 . 그러나 그는 사이트가 클라이언트 인증서를 요구하도록하는 것은 아닙니다.
다음은 내가 따르는 지침입니다.
applicationhost.config 변경 (이 중 하나는 MyDocuments \ IISExpress \ config에 있고 다른 하나는 프로그램 파일 \ IIS Express \ AppServer에 있습니다. 기본적으로 프로파일 아래에있는 것이 VS 2012의 IISExpress에서 프로젝트를 실행할 때 사용됩니다. 로컬 테스트 시스템에서 수행 한 명령 줄을 사용하여 실행하십시오.)
<access sslFlags = "None"/> to <sslFlags = "SslNegotiateCert"/>에 액세스
그리고 요소
<iisClientCertificateMappingAuthentication enabled = "false"> </ iisClientCertificateMappingAuthentication>
에
<iisClientCertificateMappingAuthentication enabled = "true"> </ iisClientCertificateMappingAuthentication>
다음 두 단계는 Visual Studio에서 모두 수행해야합니다. 기본적으로 VS 2012에서 새 프로젝트를 만들면 IIS Express 프로젝트로 만들어집니다. VS2012로 전송 된 이전 프로젝트는 실제로 해당 설정을 변경해야 할 수도 있습니다.
웹 탭의 프로젝트 속성 페이지에서 Visual Studio Developer Server 사용을 로컬 IIS 웹 서버 사용으로 변경하십시오. (컴퓨터에 정기적으로 IIS를 설치하지 않은 경우 IIS Express 사용이라고 표시된 회색으로 표시된 확인란이 있어야합니다 (이 NMCI 컴퓨터에서는 수행 할 수 없음). http : // 와 같은 프로젝트 URL이 있어야합니다. Localhost : 62714 / (Visual Studio Development Server 설정에서 "특정 포트"로 설정 한 포트와 동일해야 함)
그런 다음 솔루션 탐색기에서 프로젝트를 선택하고 특성 탭으로 이동하십시오. 속성이 표시되기 전에이 작업을 몇 번 수행해야하는 경우도 있습니다.이 속성에는 기본적으로 false로 설정되는 SSL 활성화, 새 프로젝트에서 비어있는 SSL URL 및 " 속성 탭에서
SSL 사용 가능 특성을 true로 변경하면 새 SSL URL이 작성됩니다.
""요소 아래의 applicationhost.config 파일에서 SSL을 사용하기 전에 프로젝트를 처음 실행할 때 새 항목이 작성됩니다. 다음과 같이 보일 것입니다 :
<site name="WebApplication1" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="c:\users\edward.joell\documents\visual studio 2012\Projects\WebApplication1\WebApplication1" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:61313:localhost" />
</bindings>
</site>
프로젝트에서 SSL을 활성화하면 다음과 같아야합니다.
<site name="WebApplication1" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="c:\users\edward.joell\documents\visual studio 2012\Projects\WebApplication1\WebApplication1" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:61313:localhost" />
<binding protocol="https" bindingInformation="*:44313:localhost" />
</bindings>
</site>
(모든 443xx 포트는 SSL 프로젝트 용으로 예약되어 있습니다).
IIS Express에 대한 클라이언트 인증서 요청을 구성하는 방법을 자세히 설명 하는 블로그 를 찾았습니다 (Visual Studio 2017, IISExpress 10.0 사용). 분명히 applicationhost.config
파일 위치는 Visual Studio 2015 이상에서 변경되었습니다.
다음은 그 내용에 대한 개요입니다.
SSL Enabled
to True
( SSL URL
속성 채우기)https://localhost:44300
applicationhost.config
: 2015 또는 2017에서 파일은 [solution directory]\.vs\config\
이전 버전에서 찾을 수 있습니다.%UserProfile%\Documents\IISExpress\config\
<access sslFlags="Ssl, SslNegotiateCert, SslRequireCert" />
하고<iisClientCertificateMappingAuthentication enabled="true"></iisClientCertificateMappingAuthentication>
Request.ClientCertificate
속성 의 코드에서 인증서를 사용할 수 있으며 브라우저에서 페이지를 열 때 메시지가 표시되어야합니다.