클라이언트 인증서를 요청하도록 IIS Express를 구성하는 방법


8

누구나 액세스하기 위해 클라이언트 인증서를 요구하도록 IIS Express를 구성하는 방법을 알고 있습니까? 인증에 클라이언트 인증서를 사용하는 문제가있는 ASP.NET 응용 프로그램을 디버깅하려고합니다.


1
닫기? 대부분의 IIS Express 설정은 Visual Studio에서 구성되며 프로그램 디버깅은 프로그래밍과 관련이 있습니다 ...
Marko

그런 다음 "Visual Studio를 설치하는 방법?"과 같은 질문 규칙적인 것입니까? :)
on on September

2
여기서는 논쟁하고 싶지 않지만 FYI IIS Express는 ASP.NET 개발 서버가 지원하지 않는 기능을 제공하기 때문에 ASP.NET 응용 프로그램의 디버깅에 주로 사용됩니다. 내 질문은 디버깅과 관련이 있습니다. 그러나 디버깅하려면 먼저 구성해야합니다. 어쨌든 실제 IIS를 사용하기 때문에 시스템 관리자가 아닌 일부 개발자가 이미 수행 한 것이 더 가능성이 있다고 생각합니다.
Marko

프로그래밍 방식으로 액세스하기 위해 클라이언트 인증서를 요구하는 방법을 모르겠습니다. 그러나 여기 내가 도움을 얻은 리소스가 있습니다. 이것이 도움이
되길 바랍니다

이 기사는 자세한 단계를 통해 원하는 것을 정확하게 수행합니다 (여기에서는 복사 / 붙여 넣기하지 않음) dcdevs.blogspot.com/2017/06/… HTH 로 이동하십시오 !
dotnetftw

답변:


5

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>

실제로 관련 답변이 아닙니다.
방위각

1

다음은 Jason Shavers가 블로그에서 전달한 지침입니다. (그러나 해당 페이지는 더 이상 존재하지 않습니다.) Scott Hanselman은 http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx 에서 SSL 활성화에 대해 설명합니다 . 그러나 그는 사이트가 클라이언트 인증서를 요구하도록하는 것은 아닙니다.

다음은 내가 따르는 지침입니다.

applicationhost.config 변경 (이 중 하나는 MyDocuments \ IISExpress \ config에 있고 다른 하나는 프로그램 파일 \ IIS Express \ AppServer에 있습니다. 기본적으로 프로파일 아래에있는 것이 VS 2012의 IISExpress에서 프로젝트를 실행할 때 사용됩니다. 로컬 테스트 시스템에서 수행 한 명령 줄을 사용하여 실행하십시오.)

  1. 요소 변경

<access sslFlags = "None"/> to <sslFlags = "SslNegotiateCert"/>에 액세스

그리고 요소

<iisClientCertificateMappingAuthentication enabled = "false"> </ iisClientCertificateMappingAuthentication>

<iisClientCertificateMappingAuthentication enabled = "true"> </ iisClientCertificateMappingAuthentication>

다음 두 단계는 Visual Studio에서 모두 수행해야합니다. 기본적으로 VS 2012에서 새 프로젝트를 만들면 IIS Express 프로젝트로 만들어집니다. VS2012로 전송 된 이전 프로젝트는 실제로 해당 설정을 변경해야 할 수도 있습니다.

  1. 웹 탭의 프로젝트 속성 페이지에서 Visual Studio Developer Server 사용을 로컬 IIS 웹 서버 사용으로 변경하십시오. (컴퓨터에 정기적으로 IIS를 설치하지 않은 경우 IIS Express 사용이라고 표시된 회색으로 표시된 확인란이 있어야합니다 (이 NMCI 컴퓨터에서는 수행 할 수 없음). http : // 와 같은 프로젝트 URL이 있어야합니다. Localhost : 62714 / (Visual Studio Development Server 설정에서 "특정 포트"로 설정 한 포트와 동일해야 함)

  2. 그런 다음 솔루션 탐색기에서 프로젝트를 선택하고 특성 탭으로 이동하십시오. 속성이 표시되기 전에이 작업을 몇 번 수행해야하는 경우도 있습니다.이 속성에는 기본적으로 false로 설정되는 SSL 활성화, 새 프로젝트에서 비어있는 SSL URL 및 " 속성 탭에서

SSL 사용 가능 특성을 true로 변경하면 새 SSL URL이 작성됩니다.

  1. 해당 SSL URL을 복사하고 프로젝트 속성 페이지로 돌아가서 새 프로젝트 URL로 붙여 넣습니다. 이 시점에서 "Create Virtual Directory"를 누르면 일부 블로그에서는 프로젝트를 저장하고 디버그로 실행해야 할 필요는 없다고 말합니다.

""요소 아래의 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 프로젝트 용으로 예약되어 있습니다).


0

IIS Express에 대한 클라이언트 인증서 요청을 구성하는 방법을 자세히 설명 하는 블로그 를 찾았습니다 (Visual Studio 2017, IISExpress 10.0 사용). 분명히 applicationhost.config파일 위치는 Visual Studio 2015 이상에서 변경되었습니다.

다음은 그 내용에 대한 개요입니다.

  1. 개발 시스템에 인증서를 설치하십시오 (개인 키는 클라이언트 측에서만 필요함) (설정에서 브라우저의 인증서 목록에 표시되어야 함)
  2. Visual Studio를 사용하여 새 웹 응용 프로그램 만들기
  3. 프로젝트에 SSL 사용 : 프로젝트 의 속성보기 (F4)-> SSL Enabledto True( SSL URL속성 채우기)
  4. 프로젝트를 SSL 모드로 시작하도록 설정하십시오. 프로젝트 속성 (Alt + Enter)으로 이동하여 탭을 선택한 후 프로젝트 URL을 3 단계에서 수정하십시오.https://localhost:44300
  5. IIS Express 구성 파일 찾기 applicationhost.config : 2015 또는 2017에서 파일은 [solution directory]\.vs\config\이전 버전에서 찾을 수 있습니다.%UserProfile%\Documents\IISExpress\config\
  6. ApplicationHost.config 파일을 수정 : 설정을 <access sslFlags="Ssl, SslNegotiateCert, SslRequireCert" />하고<iisClientCertificateMappingAuthentication enabled="true"></iisClientCertificateMappingAuthentication>
  7. 이제 Request.ClientCertificate속성 의 코드에서 인증서를 사용할 수 있으며 브라우저에서 페이지를 열 때 메시지가 표시되어야합니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.