Como configurar o IIS Express para solicitar certificado de cliente

8

Alguém sabe como configurar o IIS Express para exigir certificado de cliente para acesso? Eu estou tentando depurar um aplicativo ASP.NET problemático que usa certificados de cliente para autenticação.

    
por Marko 09.09.2011 / 09:32

3 respostas

5

Use a ferramenta Gerenciador do IIS e siga a documentação da Microsoft Autenticação do mapeamento de certificado do cliente IIS < iisClientCertificateMappingAuthentication > .

Configuração da amostra:

<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>
    
por 12.09.2011 / 14:30
0

Estas foram as instruções dadas por Jason Shavers em seu blog. (Mas essa página não existe mais.) Scott Hanselman também fala sobre a ativação do SSL no link . Mas em nenhum momento ele se refere a fazer o site exigir certificados de clientes.

Estas são as instruções que eu segui:

Altere o applicationhost.config (há dois deles em MyDocuments \ IISExpress \ config e o outro nos arquivos de programa \ IIS Express \ AppServer por padrão aquele no seu perfil é usado quando você executa um projeto no IISExpress no VS 2012 O outro pode ser executado usando a linha de comando, que é o que eu fiz na máquina de teste local.)

  1. Alterar o elemento

< access sslFlags="None" / > to < access sslFlags="SslNegotiateCert" />

E o elemento

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

para

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

As próximas duas etapas devem ser executadas no Visual Studio Por padrão, quando um novo projeto é criado no VS 2012, ele é criado como um projeto do IIS Express. Um projeto antigo transferido para o VS2012 pode ter que realmente mudar essa configuração.

  1. Na página de propriedades do Project na guia Web, altere Usar o Visual Studio Developer Server para usar o servidor Web do IIS local. (Deve haver uma caixa de seleção acinzentada dizendo Usar o IIS Express se você não tiver a instalação regular do IIS na sua máquina (o que não pode ser feito nessas máquinas NMCI). Deve haver um URL de projeto dizendo algo como link (que deve ser a mesma porta definida como "porta específica" no Visual Studio Development Server definição (se estiver definida)

  2. Em seguida, selecione o projeto no gerenciador de soluções e vá para a guia de propriedades. (Às vezes isso tem que ser feito algumas vezes antes que as propriedades apareçam.) Isso terá três propriedades, SSL Enable, cujo padrão é false, SSL URL que está em branco com um novo projeto e URL que é definido como o URL em " URL do projeto "na guia" Propriedades ".

Altere a propriedade SSL enabled para true e uma nova URL SSL será criada.

  1. Copie esse URL SSL e volte para a página de propriedades do projeto e cole-o lá como o novo URL do projeto. Eu cliquei em "Criar Diretório Virtual" neste ponto, embora alguns blogs digam que não é necessário que você só precise salvar o projeto e executá-lo na depuração.

No arquivo applicationhost.config sob o elemento "", uma nova entrada é feita quando o projeto é executado pela primeira vez antes de você ativar o SSL. Será assim:

        <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>

Quando você ativa o SSL no seu projeto, ele deve ficar assim:

        <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>

(todas as portas 443xx são reservadas para projetos SSL).

    
por 15.08.2017 / 17:21
0

Encontrei um blog que detalhou como configurar solicitações de certificado de cliente para IIS Express (usei o Visual Studio 2017, IISExpress 10.0). Aparentemente, a localização dos arquivos applicationhost.config foi alterada no Visual Studio 2015 e posterior.

Veja um resumo do que ele diz:

  1. Instale o certificado (observe que a chave privada é necessária apenas no lado do cliente) na máquina de desenvolvimento (ele deve estar visível nas listas de certificados do navegador nas configurações)
  2. Usando o Visual Studio, crie um novo aplicativo da web
  3. Ativar SSL para seu projeto : exibir as propriedades do projeto (F4) - > SSL Enabled to True (observe que a propriedade SSL URL é preenchida)
  4. Defina seu projeto para iniciar no modo SSL : Vá para Propriedades do projeto (Alt + Enter), selecione a guia Web e modifique o Url do projeto para o da etapa 3. Por exemplo, %código%
  5. Localize o arquivo de configuração do IIS Express https://localhost:44300 : em 2015 ou 2017, o arquivo está localizado em applicationhost.config . Nas versões anteriores, ele foi encontrado em [solution directory]\.vs\config\
  6. Modifique o arquivo applicationhost.config : defina %UserProfile%\Documents\IISExpress\config\ e <access sslFlags="Ssl, SslNegotiateCert, SslRequireCert" />
  7. O certificado agora está disponível no código na propriedade <iisClientCertificateMappingAuthentication enabled="true"></iisClientCertificateMappingAuthentication> e deve ser solicitado quando você abrir sua página no navegador.
por 07.03.2018 / 17:58