Configure o IIS para usar seus certificados autoassinados com seu aplicativo, incluindo autenticação de mapeamento de certificados de cliente IIS – blog.

, Author

Agora estou assumindo que você leu meu post anterior sobre como criar certificados autoassinados para desenvolvimento e isso pode ter deixado você pensando “Yay great! …., mas como é que os uso realmente?”. Este post do blog irá levá-lo passo a passo através do processo manual de configuração do IIS no seu PC ou Windows Server para usar seus certificados auto assinados juntamente com a autenticação do mapeamento de certificados do cliente IIS.

Por favor note que nos meus exemplos eu uso meu host local e um nome de domínio aleatório, mas você pode fazer isso no IIS do seu servidor real se você tiver um endereço IP estático do seu provedor de serviços de Internet ou da sua empresa de hospedagem de domínios, bem como configurar corretamente seu firewall, roteador, etc., onde finalmente você pode apontar o seu nome de domínio para o seu endereço. MAS eu não recomendarei nenhum dos dois junto com certificados auto assinados a menos que seus clientes/usuários estejam dispostos a receber e instalar seu certificado de root e cliente auto assinado. Um bom exemplo disso é uma intranet fechada onde você tem acesso a todos os computadores do usuário final, porque então você pode instalar os certificados em suas máquinas, o que é necessário se você não quiser que seus usuários recebam um grande aviso sobre problemas de confiança com o seu certificado de servidor autoassinado. Se você está procurando uma solução comercial digna de produção, você deve comprar seus certificados em vez de autoassinar. Então agora temos isso fora do caminho, estou usando um PC com Windows 8.1 Pro, IIS 8.5 e Visual Studio Premium 2013. (Eu também testei com um Windows Server 2012 R2 Hyper-V VM no meu PC).

Installing IIS
Se você ainda não instalou o IIS na máquina que irá atuar como servidor de hospedagem, por favor, faça isso pressionando o botão Windows para um PC e procure “Ligar ou desligar recursos do Windows” (ou vá para Painel de Controle e procure). Verifique os Serviços de Informação da Internet e os seguintes códigos para crianças. 1 instalação completa do IIS
(Se você está rodando em .NET 3.5 você precisa verificar o .NET Extensibility 3.5 e o ASP.NET 3.5)

Para Windows Server 2012 vá para o Dashboard Server Manager ➜ Clique em add roles and features ➜ Escolha role-based ou feature-e vá em seguida ➜ Selecione o servidor ➜ Habilite a função servidor chamada Web Server (IIS) e os seguintes elementos filhos Server IIS

Agora certifique-se de que o Desenvolvimento de Aplicações esteja verificado com os seguintes códigos filhos Server IIS application dev

Clique OK e deixe o Windows instalar.

Criando nosso projeto de exemplo
Para o bem deste demo vamos criar uma mini-aplicação realmente simples que nós estaremos hospedando no IIS local. (Você também pode apenas garfo meu diretamente no Github)

No Visual Studio, crie uma nova aplicação web vazia e api web de referência 5 Novo Projeto

Só precisamos de um controlador reeeeaally simples:

using System.Web.Http;namespace IISWithCertificatesSample.WebApi.Controllers{ public class CatsController : ApiController { public IHttpActionResult Get() { return Ok("A lot of cats meowing for food"); } }}

Você deve agora ser capaz de rodar ambas as rotas (F5) e navegar até a url do localhost com /api/cats (a minha parece http://localhost:62172/api/cats). Awesome, vamos hospedar esta aplicação usando nosso IIS local.

NOTE: Não vamos mais executar a aplicação diretamente do Visual Studio (F5) que está configurado para usar o IIS Express.

Configurando o IIS
Abra o seu IIS Manager (botão Windows + procurar por ele). Adicione um novo site e um pool de aplicações com a nossa aplicação de amostra. (Clique com o botão direito do mouse em Sites ➜ Adicionar Website) O caminho precisa ser a pasta onde os documentos do seu site estão localizados, então se você publicou o seu site aponte o caminho para lá. Vou apenas usar o caminho direto para o projeto no Visual Studio para este exemplo muito simples.

Agora vamos hospedar este site localmente especificando o nome do host AKA. seu nome de domínio. 7 yourdomain.com

Desde que eu estou apenas hospedando localmente, eu preciso adicionar o site ao meu arquivo de hosts local para vincular meu endereço IP de host local com o nome do host. Isto é feito executando o bloco de notas como administrador e abrindo o arquivo hosts no caminho: %systemroot%\System32\drivers\etc hosts file

Adicionando o seguinte no final: 127.0.0.1 yourdomain.com www.yourdomain.com 8 host file

Agora sempre que eu navegar para yourdomain.com e www.yourdomain.com na minha máquina, ele irá resolver o site com os meus bindings recentemente adicionados ao 127.0.0.1 endereço IP (que é o IP do localhost).

Vamos adicionar o www. binding ao seu site no IIS Manager também 9 IIS bindings 10 add http binding 11 domain with wwww12 both http added

Surf to the domain name you set up in the bindings with or without www. and add the ending /api/cats and you should get the meowing cats. (Se não tentar esvaziar a cache)

IMPORTANTE: Isto vai acontecer APENAS na máquina local porque alteramos o arquivo hosts para redirecionar nossos pedidos do nome do domínio que adicionamos ao endereço IP do localhost. É para desenvolvimento e para poder testar suas alterações antes de implementá-las em seu servidor real de hospedagem web.

Segurar o servidor com SSL
Agora queremos proteger os gatos adicionando um certificado SSL ao nosso Servidor.
No seu Gerenciador de IIS vá para o seu servidor (O topo da árvore à esquerda) ➜ Role para baixo e clique duas vezes em Certificados de Servidor. 13 IIS Server

(Se o seu certificado auto assinado já está aqui, salte para os passos bindings)

Precisamos importar o nosso certificado de servidor auto assinado a fim de habilitar a comunicação https com SSL, então clique em Importar… 14 Importar certificado de servidor

Clique no … e encontre o seu .pfx, preencha a senha (o parâmetro -po no seu arquivo de lote de comandos) e clique em OK 15 procurar server cert

Seu certificado é agora adicionado 16 cert adicionado

Duplo clique no novo cert adicionado para verificar se ele é confiável (Seus certificados auto assinados foram adicionados às lojas corretas no meu post anterior, então novamente: leia-o se você está perdido agora mesmo ;-))

17 cert de servidor de confiança

Até agora, tudo bem! Agora podemos adicionar a ligação https, da mesma forma que antes mas escolha https com a porta 443, o seu domínio como o nome do host e encontre o seu certificado auto assinado na lista pendente

18 bindings add ssl

Check the Server Name Indication box que permite ao nosso servidor ter vários certificados instalados no mesmo endereço IP, enviando o nome do host com o primeiro estágio do aperto de mão SSL. Repita os mesmos passos para adicionar SSL para www.yourdomain.com mas com um certificado onde o nome CN corresponde ao nome do domínio ou um wildcard certificado
19 https www com wildcard

As nossas ligações estão completas por agora

19 Todas as ligações

Tadaa, pode agora usar https://yourdomain.com/api/cats e https://www.yourdomain.com/api/cats

NOTE: O Firefox não usa a loja de certificados do Windows, por isso terá de adicionar a sua CA de raiz manualmente. Vá para Configurações do Firefox ➜ Opções ➜ Avançado ➜ Ver Certificados ➜ Autoridades ➜ importar seu arquivo CARoot.cer

IIS Client Certificate Mapping Authentication
Já passamos pelos usos dos certificados raiz e servidor e você provavelmente está se perguntando o que fazer com o certificado cliente que também criamos no meu post anterior. Isto é para situações em que, por exemplo, precisamos autenticar clientes sem uma abordagem de login e senha do usuário, mas queremos que o servidor peça ao cliente para mostrar seu certificado e se é o correto, o cliente é permitido a entrar. Isto pode ser feito com um mapeamento de Many-To-One ou One-To-One e vou mostrar-lhe como fazer ambos manualmente no IIS Manager.

Primeiro precisamos instalar o recurso, então traga o “Ligar ou desligar recursos do Windows” novamente e instale o seguinte 20 IIS client cert mapping

Diremos ao nosso servidor para requerer um certificado SSL do cliente 21 SSL Settings 22 apply require ssl

Então precisamos configurar o servidor para saber qual certificado de cliente ele precisa para validar, Então vá para o Editor de Configuração e escolha a seção iisClientCertificateMappingAuthentication (você também pode entrar no sistema de caminhos.webServer/security/authentication/iisClientClientCertificateMappingAuthentication no campo Section) 24 iisClientCertMapAuth section

Many-To-One Mappings
Se você quiser mapear vários certificados de cliente para um único usuário, esta abordagem é o que você precisa. Você também pode compartilhar certificados clientes como este instalando o certificado cliente (e a CA Root, já que estamos autoassinando o certificado) em outros usuários em qualquer máquina para obter acesso, desde que o certificado cliente corresponda aos critérios de regra do mapeamento. Seria útil, por exemplo, em uma situação em que você gostaria que todos os usuários de uma organização ganhassem acesso através de um único mapeamento de usuários.

Ativar a autenticação do mapeamento do certificado cliente 25 ativar o cliente auth

Adicionar um mapeamento clique no … dos muitosToOneMappings 26 adicionar mapeamento>

Aqui você adiciona os usuários que você quer conceder acesso.27 adicionar novo mapeamento

Preencher as propriedades de um mapeamento e repetir para cada usuário que você deseja configurar para acesso ou negação. Lembre-se que você precisa do certificado do cliente e do certificado da CA raiz instalados em todos os usuários mmc.
28 mapeamento manytoone

IMPORTANTE: Para isto funcionar você precisa digitar um nome de usuário e senha válidos e como meu computador é o servidor, as credenciais serão meu nome de usuário e senha do Windows.

Agora precisamos criar algumas regras para ir com este mapeamento para que o servidor possa determinar se um cliente é permitido entrar ou não. Então clique na propriedade regras e no botão …

29 adicionar regra

I adicionará uma regra como exemplo onde o servidor irá verificar o certificado do cliente para ver se ele está assinado pela raiz CA correta. Vá em frente e adicione mais regras para maior segurança, visite a referência do IIS Many-To-One Mapping para mais documentação.
31 regra

Remembrar para aplicar as alterações no IIS Manager, então feche as janelas de regras e mapeamentos e clique em Apply 32 apply changes

Abrir uma nova janela do navegador incógnito para ter certeza de começar a partir de um cache de planilha limpa e de cookies e digite sua url com o /api/cats e veja o navegador solicitando um certificado. Escolha o ClientCert e clique em ok para ter acesso aos gatos. 33 ok client cert

Se isto não estiver a funcionar, certifique-se de que o seu certificado de cliente está na sua loja de utilizadores actuais/depessoas, bem como na loja de certificados do seu browser. Se sim, então vá ao Painel de Controle ➜ Opções da Internet ➜ Conteúdo e clique em Limpar estado SSL. 34 clear ssl state

Abra uma nova janela incógnita e tente novamente, o seu browser deve agora pedir-lhe o certificado cliente.

NOTE: Lembre-se como expliquei anteriormente, o Firefox tem a sua própria loja de certificados, por isso precisa de importar o certificado cliente para “Os seus certificados” para usar isto.

Mapeamentos de um-para-um
Vamos passear também pelos mapeamentos de um-para-um. Esta abordagem significa que nós precisamos de um certificado de cliente individual para cada mapeamento de usuário. Você pode desabilitar o mapeamento many-to-one e usar o mesmo certificado e usuário ou criar novos mapeamentos. Volte para o Editor de Configuração e abra novamente a seção iisClientCertificateMappingAuthentication. Clique no … do oneToOneMappings. 35 habilitar um para um mapeamento

Para adicionar o mapeamento ao certificado precisamos exportar a chave pública do arquivo de certificado do cliente. Você pode exportar isto da sua Console de Gerenciamento de Máquina (pressione o botão Windows e procure por mmc) Instale a loja pessoal do Certificado da Máquina Local e exporte o certificado ssl do cliente que você quer usar sem a chave privada no formato base64. Exportar certificado cliente Sem chave privada base64 exportar

Clique com o botão direito no certificado recém exportado e abra com o bloco de notas. Remova todas as quebras de linha no próprio certificado. Remover line-breaks

Agora copie isso para o campo de propriedade do certificado do mapeamento e preencha o resto 38 adicione o mapeamento do usuário

IMPORTANTE: Para que isso funcione você precisa digitar um nome de usuário e senha válidos e como meu computador é o servidor, as credenciais serão um nome de usuário e senha do Windows.

Again, lembre-se de aplicar as alterações. 39 aplicar as alterações

E lá vai você, experimente e quando solicitado escolha o certificado que você mapeou para o usuário que você acabou de mapear.

Eu espero que você tenha achado este post útil e para o meu próximo post eu estarei passando por como usar certificados auto assinados junto com o Windows Azure e como configurar o IIS pelo código C#, dê uma olhada aqui: http://blog.jayway.com/2015/04/21/configure-a-windows-azure-cloud-service-to-use-your-self-signed-certificates-for-iis-client-certificate-mapping-authentication/

Disponha um bom =)

Deixe uma resposta

O seu endereço de email não será publicado.