Estou tentando obter um serviço da Web que estamos criando para exigir certificados de clientes
para conexões por várias semanas e não tenho tido muita sorte. Eu pensei que
Eu tentaria criar um site simples que requer certificados de cliente para remover
todo o código adicional de webservice da equação. Mesmo que todos os on-line
tutoriais fizeram parecer que seria um processo muito mais fácil, eu ainda não tive
sorte. Não tenho certeza se estou perdendo uma configuração no IIS ou algo simplesmente não é
instalado.
O servidor é o Windows Server 2008 Web Edition. Minha caixa de cliente local é o Windows 7.
Eu detalhei cada passo que dei para criar este site de teste.
Primeiro, tive que criar meus certificados de teste.
De um prompt de comando do Windows 7 SDK 7.1 na minha máquina local, eu executei estes comandos:
makecert.exe -r -n "CN=My Personal CA" -pe -sv MyPersonalCA.pvk -a sha1 -len 2048 -cy authority MyPersonalCA.cer
makecert.exe -iv MyPersonalCA.pvk -ic MyPersonalCA.cer -n "CN=John Doe" -pe -sv JohnDoe.pvk -a sha1 -len 2048 -sky exchange JohnDoe.cer -eku 1.3.6.1.5.5.7.3.2
pvk2pfx.exe -pvk JohnDoe.pvk -spc JohnDoe.cer -pfx JohnDoe.pfx -po password
Após esses comandos, eu tive esses arquivos:
MyPersonalCA.cer
MyPersonalCA.pvk
JohnDoe.cer
JohnDoe.pfx
JohnDoe.pvk
Em seguida, importei o seguinte para o IE na minha máquina local (Ferramentas- > Opções da Internet- > Conteúdo- > Certificados-Importação):
JohnDoe.pfx no armazenamento "Pessoal" (em "Avançado", certifique-se de que "Autenticação do Cliente" esteja selecionada)
MyPersonalCA.cer na loja "Authrorities de Certificação de Raiz Confiável"
No servidor, importei os certificados de acompanhamento usando o snap-in MMC Certificates:
JohnDoe.cer into [Local Computer\Personal] and [Current User\Personal]
MyPersonalCA.cer into [Local Computer\Trusted Root Certification Authorities] and
[Current User\Trusted Root Certification Authorities]
Eu criei um aplicativo da Web VB.NET (VS2008) em branco e implantei-o no servidor.
No IIS, atribuí esse aplicativo a um pool de aplicativos em execução como administrador
para evitar quaisquer problemas de permissão (sim, eu vou corrigir isso mais tarde).
No IIS, altero as configurações de SSL do aplicativo da seguinte forma:
Check "Require SSL"
Under "Client Certificates", select "Require"
Eu também atribuí os erros 403.7 e 403.5 a páginas de erro personalizadas para que eu pudesse identificar qual erro 403 eu estava recebendo.
O IE deve solicitar a seleção de um certificado de cliente quando
indo para a página. Desde versões mais recentes do IE não solicitar se não houver correspondência
certificados, eu encontrei uma caixa velha com o IE6, e nessa caixa (com os certificados
instalado) Eu recebo a caixa de diálogo Certificado de cliente, mas nenhum certificado é listado.
IE10 na minha caixa de desenvolvedor nunca abre um prompt. Acabei de receber um 403.7 imediato
Alguém pode me dizer onde estou errado aqui? O IIS exige mais
configuração para isso funcionar?
Ao enviar esta pergunta, me deparei com outro post falando sobre
MakeCTL e netssh. A partir disso, descobri que, se eu corro:
netssh http show sslcert
Eu recebo uma lista de configurações incluindo:
Negotiate Client Certificate : Disabled
Isso precisa ser ativado? Se sim, como faço isso? O limitado
instruções que eu consegui encontrar soar como eu precisaria excluir
a ligação SSL e adicioná-lo novamente. Eu estou hesitante em brincar com isso desde
o servidor está em uso.