Qual certificado de máquina a VPN do Windows oferece?
Vários certificados de máquina, um oferecido, e o gateway rejeita-o. Restrinja o conjunto com os filtros de emissor e de EKU em vez de apagar o que quer que seja.
Os certificados estão instalados, as chaves privadas estão presentes e o túnel continua a falhar a autenticação. Uma máquina com vários certificados pode entregar à VPN um candidato que ninguém pretendia, e o cliente não tem forma de saber qual o gateway aceitaria. Apagar os outros é uma política de seleção com consequências para todos os serviços da máquina. Restrinja, em vez disso, o conjunto elegível e confirme depois qual foi o certificado efetivamente oferecido.
Vários certificados, um oferecido
Os perfis VPN nativos do Windows com autenticação por certificado de máquina expõem dois filtros que restringem os candidatos: um filtro de emissor e um filtro de utilização estendida da chave. Reduzem o conjunto de onde o cliente pode escolher. Não reparam um certificado inadequado e não garantem que o servidor aceite o que sobra. Esse limite merece constar no registo de alterações, porque o próximo leitor assumirá que o filtro decidiu mais do que decidiu.
A falha que resolvem é estreita e concreta. Um certificado válido da autoridade errada, ou emitido para uma finalidade que o gateway não aceita, é escolhido antes do pretendido, o que produz uma falha de autenticação ao lado de um armazenamento saudável. Dois filtros transformam isso num conjunto suficientemente pequeno para raciocinar, e o resto desta página aplica-os por ordem.
Inspecione o armazenamento antes de editar o perfil
Liste os candidatos e as suas propriedades no armazenamento que o perfil utiliza de facto. Nada aqui exporta uma chave privada, e nenhum certificado tem de sair da máquina:
Get-VpnConnection -Name 'Office' | Select-Object Name, TunnelType, AuthenticationMethod
Get-ChildItem Cert:\LocalMachine\My | Select-Object Subject, Issuer, Thumbprint, NotAfter, HasPrivateKey, EnhancedKeyUsageList
Leia a saída para as propriedades de que a decisão depende: uma chave privada utilizável, uma janela de validade aceitável, o emissor pretendido e as finalidades da extensão. Um certificado pode estar presente, corretamente inscrito e inútil para esta ligação ao mesmo tempo. A coluna da impressão digital é aquela com que irá comparar mais tarde, por isso guarde a saída.
Confirme o perfil e o seu âmbito antes de editar, porque um certificado de máquina em LocalMachine, um certificado EAP-TLS de utilizador e um armazenamento de chaves privadas próprio de uma aplicação são três contextos distintos. Utilize o âmbito de todos os utilizadores e um contexto administrativo quando o perfil gerido aí residir. Criar um segundo perfil com um nome semelhante oculta qual configuração a ligação utiliza de facto.
O filtro de emissor quer um objeto
O parâmetro de emissor espera um objeto de certificado, não um nome a apresentar e não uma cadeia de impressão digital nua. Forneça o certificado da autoridade aprovada a partir de um caminho que tenha verificado, no armazenamento a que pertence:
$issuerPath = Read-Host 'Certificate-provider path for the approved issuer CA'
$issuer = Get-Item -LiteralPath $issuerPath
Set-VpnConnection -Name 'Office' -MachineCertificateIssuerFilter $issuer
Não substitua o certificado folha do próprio cliente, outra autoridade com um sujeito semelhante nem uma raiz acabada de gerar apenas porque o tipo do parâmetro o aceita. Duas autoridades podem partilhar a mesma cadeia de sujeito, e é por isso que o objeto conta mais do que o texto. A referência de cmdlets da Microsoft documenta ambos os tipos de entrada, e vale a pena lê-la antes da primeira edição e não depois da tentativa falhada.
O filtro de utilização quer uma cadeia OID
O parâmetro de utilização estendida da chave aceita cadeias OID, e a finalidade de autenticação de cliente é 1.3.6.1.5.5.7.3.2. Aplicá-lo restringe os candidatos aos certificados que transportam essa finalidade, que é o que uma implementação com autenticação de cliente pretende:
Set-VpnConnection -Name 'Office' -MachineCertificateEKUFilter '1.3.6.1.5.5.7.3.2'
O valor é uma matriz, pelo que uma implementação que necessite de várias finalidades as passa como lista. O que o filtro não pode fazer é acrescentar uma finalidade a um certificado: é uma expressão de seleção avaliada contra extensões assinadas, e nenhum filtro as reescreve, pelo que um certificado sem a finalidade tem de voltar a passar pelo registo.
Mantenha a configuração EAP dos certificados de utilizador separada da filtragem dos certificados de máquina, porque vivem em locais diferentes e uma alteração numa raramente explica uma falha na outra. Verifique também se o domínio ou a gestão de dispositivos é proprietário do perfil, porque uma edição local pode ser substituída na atualização de políticas seguinte sem que ninguém toque na máquina.
Prove qual certificado o cliente ofereceu
Estabeleça uma nova ligação e leia as evidências de autenticação de cliente e servidor para a identidade pretendida. Quando mais de um certificado satisfaz os filtros, o resultado é um conjunto menor e não uma folha fixada, pelo que a tentativa seguinte pode escolher outro membro. Anote a impressão digital que aparece nessas evidências e compare-a com a que registou a partir do armazenamento.
Um comando bem-sucedido não é uma autenticação bem-sucedida. O resultado que vale a pena registar é o certificado pretendido a autenticar-se sob a política gerida, enquanto cada certificado não relacionado permanece disponível para os serviços que dele dependem. Se a falha sobreviver aos dois filtros, o local a examinar a seguir são os candidatos restantes e não o perfil como um todo.