Introdução
Este documento descreve as etapas de configuração para configurar o FlexVPN com um cliente integrado no Windows 10/11.
Pré-requisitos
Requisitos
A Cisco recomenda que você tenha conhecimento destes tópicos:
- Cliente VPN interno do Windows
- Configuração FlexVPN do Cisco IOS® XE
- Configuração básica do OpenSSL
Componentes Utilizados
O guia de configuração é baseado nestas versões de hardware e software:
- Windows 10 e Windows 11
- Cisco IOS XE 16.12.4
- Autoridade de certificação (CA) OpenSSL v1.1.0g
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
Configurar
Pré-requisitos da CA
A CA deve permitir que você insira o Uso Estendido de Chave (EKU) necessário no certificado. Por exemplo, no servidor IKEv2, Server Auth EKU
é necessário, enquanto o certificado do cliente precisa Client Auth EKU
. As implantações locais podem usar:
- Servidor de CA do Cisco IOS - Certificados autoassinados não podem ser usados devido ao bug da Cisco ID CSCuc82575.
- Servidor de autoridade de certificação OpenSSL -
openssl.cnf
deve ter extendedKeyUsage = serverAuth, clientAuth, este arquivo normalmente está localizado no caminho /etc/ssl/
.
- Microsoft CA Server - Em geral, essa é a opção preferencial, pois pode ser configurada para assinar o certificado exatamente como desejado.
Diagrama de Rede
Laboratório de topologia
Configurações
Configurar uma CA
Roteador como CA
Se você usar um servidor de CA do Cisco IOS, certifique-se de usar a versão mais recente do software Cisco IOS, que atribui o EKU.
IOS-CA# show run | section crypto pki
crypto pki server IOS-CA
issuer-name cn=IOS-CA.cisco.com,ou=TAC,o=cisco
grant auto
eku server-auth client-auth
OpenSSL como CA
A CA do OpenSSL é baseada no arquivo openssl.cnf. O arquivo 'config' para o servidor OpenSSL deve ter:
keyUsage = nonRepudiation, digitalSignature, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth, clientAuth
Configurar o roteador IOS XE/IOS
Importar o certificado pkcs12 se o OpenSSL
O certificado deve ter os campos EKU definidos como 'Autenticação do servidor' para o Cisco IOS e 'Autenticação do cliente' para o cliente. Normalmente, a mesma CA é usada para assinar certificados de cliente e servidor. Nesse caso, tanto a 'Autenticação do servidor' quanto a 'Autenticação do cliente' são vistas no certificado do servidor e no certificado do cliente, respectivamente, o que é aceitável.
Se a CA emitir os certificados no formato de #12 PKCS (Public-Key Cryptography Standards) no servidor IKEv2 para os clientes e o servidor, e se a CRL (certificate revocation list) não estiver acessível ou disponível, ela deverá ser configurada:
crypto pki trustpoint FlexRootCA
revocation-check none
Insira este comando para importar o certificado PKCS#12:
copy ftp://user:***@OpenSSLServer/p12/FlexRootCA.p12* flash:/
crypto pki import FlexRootCA pkcs12 flash:/FlexRootCA.p12 password
!! Note: FlexRootCA.p12 is a pkcs12 format certificate that has CA Certificate bundled in it.
Você também pode converter o pkcs12 em base64 no OpenSSL e importar o certificado no terminal:
openssl base64 -in ikev2.p12 -out ikev2.pem
cat ikev2.pem —> copie a saída de base64
crypto pki trustpoint FlexRootCA
enrollment terminal
revocation-check none
crypto pki import FlexRootCA pkcs12 terminal password
***paste the base64 output from the cat ikev2.pem here***
quit --> when the paste ends you need to type quit to finish
Solicitar o Certificado com o Roteador como Servidor CA
Se um servidor de CA do Cisco IOS conceder certificados automaticamente, o servidor IKEv2 deverá ser configurado com o URL do servidor de CA para receber um certificado como mostrado neste exemplo:
crypto pki trustpoint FlexRootCA
enrollment url http://
:80
subject-name cn=ikev2.cisco.com,ou=TAC,o=cisco
revocation-check none
eku server-auth client-auth
Quando o ponto confiável é configurado, você precisa:
- Autentique a CA com este comando:
crypto pki authenticate FlexRootCA
- Inscreva o servidor IKEv2 com a autoridade de certificação com este comando:
crypto pki enroll FlexRootCA
Configurar FlexVPN IKEv2 com autenticação de certificado
Este é um exemplo de uma configuração de IKEv2:
aaa authorization network winclient local
ip local pool mypool 172.16.0.101 172.16.0.250
!! Certificate MAP to match Remote Certificates, in our case the Windows Clients
crypto pki certificate map winclient_map 10
subject-name co ou = tac
!! One of the proposals that Windows 10/11 Built-In Client Likes
crypto ikev2 proposal winclient
encryption aes-cbc-256
integrity sha1
group 2
crypto ikev2 policy winclient
proposal winclient
!! IKEv2 Local Authorization Policy. Split-Tunneling does not work, as was
!! the case in good old l2tp over IPSec.
crypto ikev2 authorization policy winclient_author
pool mypool
crypto ikev2 profile winclient-rsa
match certificate winclient_map
identity local fqdn ikev2.cisco.com
authentication local rsa-sig
authentication remote rsa-sig
pki trustpoint FlexRootCA
aaa authorization group cert list winclient winclient_author
virtual-template 1
crypto ipsec transform-set aes256-sha1 esp-aes 256 esp-sha-hmac
crypto ipsec profile winclient_ikev2
set transform-set aes256-sha1
set ikev2-profile winclient-rsa
interface Virtual-Template1 type tunnel
ip unnumbered Loopback0
tunnel mode ipsec ipv4
tunnel protection ipsec profile winclient_ikev2
O IP não numerado do modelo virtual deve ser qualquer um, exceto o endereço local usado para a conexão IPsec. (Se você usar um cliente de hardware, trocaria informações de roteamento através do nó de configuração IKEv2 e criaria um problema de roteamento recursivo no cliente de hardware).
Observação: IOS XE versão 17.06.01a ID de bug Cisco CSCwa76260 e o bug da Cisco ID CSCwa80474 interferem na funcionalidade adequada do cliente interno do Windows, já que eles usam group2 como um grupo dh padrão. Com uma atualização para uma versão fixa, você é notificado sobre a remoção futura de cifras obsoletas, mas elas ainda podem funcionar. Informações adicionais:
Configurar o cliente interno do Windows IKEv2
Cliente Interno do Windows 10
1. Navegue até Settings > Network & Internet > VPN
e clique ou selecione Add a VPN Connection
conforme mostrado na imagem:
Configurações de VPN do Windows
2. Configure o provedor de VPN como Windows (interno), o nome da Conexão, o nome ou endereço do Servidor, o tipo de VPN e o Tipo de informações de entrada (autenticação) e clique em Save
conforme mostrado na imagem.
Adicionar configurações de VPN do Windows
3. Clique em alterar as opções do adaptador e clique com o botão direito do mouse ou selecione o adaptador chamado FlexVPN-IOS
. Navegue até Properties > Security
e selecione Use machine certificates
conforme mostrado na imagem:
Opções de adaptador do Windows
O perfil do FlexVPN-IOS agora está pronto para ser conectado depois que você importar um certificado para o armazenamento de certificados da máquina.
Cliente Interno do Windows 11
1. Navegue até Settings > Network & internet > VPN
e clique ou selecione Adicionar VPN:
Configurações de VPN do Windows 11
2. Configure o provedor de VPN como Windows (interno), o nome da Conexão, o nome ou endereço do Servidor, o tipo de VPN e o Tipo de informações de entrada (autenticação) e depois Salvar:
Configurações de conexão VPN do Windows 11
3. Clique em Network & Internet
novamente, Configurações de rede avançadas e clique ou selecione More network adapter options
conforme mostrado na imagem:
Opções de caminho para o adaptador do Windows 11
Clique com o botão direito do mouse ou selecione o adaptador chamado FlexVPN-IOS e navegue até Propriedades, navegue até Security
e selecione Usar certificados de máquina:
Opções de adaptador do Windows 11
O perfil do FlexVPN-IOS agora está pronto para ser conectado depois que você importar um certificado para o armazenamento de certificados da máquina.
Obter um certificado de cliente
O certificado de cliente requer estes fatores:
- O certificado do cliente tem um EKU de 'Autenticação do Cliente'. Além disso, a CA fornece um certificado PKCS#12: o certificado PKCS12 do cliente deve ir para o armazenamento de certificados pessoais do computador local
Instalação do certificado Windows PKCS12
1. Abra o certificado pfx ou p12:
Clique ou selecione o Local de armazenamento Computador local:
Assistente para importação de certificados - etapa 1
2. Especifique o caminho do p12 ou pfx conforme mostrado na imagem.
Assistente para importação de certificados - etapa 2
3. Digite a senha para a chave privada conforme mostrado na imagem:
Assistente para importação de certificados - etapa 3
Observação: marque a chave como exportável é opcional.
4. Clique ou selecione Place all certificates in
a loja pessoal:
Etapa 4 do assistente de importação de certificados
O pkcs12 normalmente inclui a cadeia completa, CA e certificados intermediários. Se esse for o caso, você deve garantir que a CA esteja instalada no Repositório de Autoridades de Certificação Raiz Confiáveis.
Instalação do Certificado CA do Windows
Caso a CA não esteja no Repositório de Autoridades de Certificação Raiz Confiáveis, siga estas etapas para instalá-la:
1. Abra o arquivo pem ou crt da CA e clique ou selecione Instalar certificado conforme mostrado na imagem.
Certificado CA
Se a CA não estiver no Repositório de Autoridades de Certificação Raiz Confiáveis, você verá esta mensagem: "Este certificado raiz da CA não é confiável...."
2. Clique ou selecione o Local de Armazenamento Computador Local:
Etapa 1 do assistente de importação de certificado CA
3. Clique ou selecione Place all certificates in the following store
e Trusted Root Certification Authorities
loja:
Etapa 2 do assistente de importação de certificado CA
4. Conclua o Assistente para Importação de Certificados:
Etapa 3 do assistente de importação de certificado CA
A instalação do certificado sempre pode ser confirmada com Windows Key+R
e aberto mmc.exe
or certlm.msc
.
Detalhes importantes
- 'IPSec IKE intermediate' (OID = 1.3.6.1.5.5.8.2.2) deve ser usado como EKU se ambas as instruções se aplicarem:
- O servidor IKEv2 é um servidor Windows 2008.
- Há mais de um certificado de autenticação de servidor em uso para conexões IKEv2. Se isso for verdadeiro, coloque o EKU 'Server Authentication' e o EKU 'IPSec IKE Intermediate' em um certificado ou distribua esses EKUs entre os certificados. Verifique se pelo menos um certificado contém o EKU 'IPSec IKE Intermediate'.
Consulte Troubleshooting de Conexões VPN IKEv2 para obter mais informações.
- Em uma implantação do FlexVPN, não use 'IPSec IKE Intermediate' em EKU. Se você fizer isso, o cliente IKEv2 não selecionará o certificado do servidor IKEv2. Como resultado, eles não conseguem responder a CERTREQ do IOS na mensagem de resposta IKE_SA_INIT e, portanto, não conseguem se conectar com uma ID de erro 13806.
- Embora o SAN (nome alternativo do assunto) não seja necessário, ele é aceitável se os certificados tiverem um.
- No Repositório de Certificados do Cliente do Windows 10/11, verifique se o Repositório de Autoridades de Certificação Raiz Confiável por Computador tem o menor número de certificados possível. Se tiver mais de 50 ou mais, o Cisco IOS pode falhar ao ler todo o payload Cert_Req, que contém o Nome Distinto do Certificado (DN) de todas as CAs conhecidas da caixa Windows 10/11. Como resultado, a negociação falha e você vê o timeout da conexão no cliente.
Verificar
Use esta seção para confirmar se a sua configuração funciona corretamente.
CSR1Kv# show crypto ikev2 session detail
IPv4 Crypto IKEv2 Session
Session-id:6, Status:UP-ACTIVE, IKE count:1, CHILD count:1
Tunnel-id Local Remote fvrf/ivrf Status
1 10.0.3.1/4500 192.168.56.1/4500 none/none READY
Encr: AES-CBC, keysize: 256, Hash: SHA96, DH Grp:2, Auth sign: RSA, Auth verify: RSA
Life/Active Time: 86400/5s 7 sec
CE id: 1007, Session-id: 6
Status Description: Negotiation done
Local spi: 3A330D1951062E50 Remote spi: 222ED6C38002E26D
Local id: ikev2.cisco.com
Remote id: ou=TAC,o=Cisco,c=BE,cn=Winclient
Local req msg id: 0 Remote req msg id: 2
Local next msg id: 0 Remote next msg id: 2
Local req queued: 0 Remote req queued: 2
Local window: 5 Remote window: 1
DPD configured for 0 seconds, retry 0
NAT-T is not detected
Cisco Trust Security SGT is disabled
Assigned host addr: 172.16.0.105
Initiator of SA : No
Child sa: local selector 0.0.0.0/0 - 255.255.255.255/65535
remote selector 172.16.0.105/0 - 172.16.0.105/65535
ESP spi in/out: 0xB01348F5/0x142CEC36
AH spi in/out: 0x0/0x0
CPI in/out: 0x0/0x0
Encr: AES-CBC, keysize: 128, esp_hmac: SHA96
ah_hmac: None, comp: IPCOMP_NONE, mode tunnel
CSR1Kv#show crypto ipsec sa peer 192.168.56.1
interface: Virtual-Access1
Crypto map tag: Virtual-Access1-head-0, local addr 10.0.3.1
protected vrf: (none)
local ident (addr/mask/prot/port): (0.0.0.0/0.0.0.0/0/0)
remote ident (addr/mask/prot/port): (172.16.0.105/255.255.255.255/0/0)
current_peer 192.168.56.1 port 4500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 223, #pkts encrypt: 223, #pkts digest: 223
#pkts decaps: 315, #pkts decrypt: 315, #pkts verify: 315
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 0, #recv errors 0
local crypto endpt.: 10.0.3.1, remote crypto endpt.: 192.168.56.1
plaintext mtu 1438, path mtu 1500, ip mtu 1500, ip mtu idb GigabitEthernet1
current outbound spi: 0x142CEC36(338488374)
PFS (Y/N): N, DH group: none
inbound esp sas:
spi: 0xB01348F5(2954053877)
transform: esp-aes esp-sha-hmac ,
in use settings ={Tunnel, }
conn id: 2017, flow_id: CSR:17, sibling_flags FFFFFFFF80000048, crypto map: Virtual-Access1-head-0
sa timing: remaining key lifetime (k/sec): (4607961/2461)
IV size: 16 bytes
replay detection support: Y
Status: ACTIVE(ACTIVE)
inbound ah sas:
inbound pcp sas:
outbound esp sas:
spi: 0x142CEC36(338488374)
transform: esp-aes esp-sha-hmac ,
in use settings ={Tunnel, }
conn id: 2018, flow_id: CSR:18, sibling_flags FFFFFFFF80000048, crypto map: Virtual-Access1-head-0
sa timing: remaining key lifetime (k/sec): (4607987/2461)
IV size: 16 bytes
replay detection support: Y
Status: ACTIVE(ACTIVE)
outbound ah sas:
outbound pcp sas:
Troubleshooting
Você pode solucionar problemas da conexão FlexVPN e da negociação de certificado com estas depurações:
debug crypto condition peer <remove client public ip>
debug crypto ikev2
debug cry pki messages
debug cry pki transactions
No cliente Windows, você pode verificar o Visualizador de Eventos nos Logs do Windows e verificar o Aplicativo, os eventos de conexão VPN usam o RasClient de origem. Por exemplo;
Logs do visualizador de eventos do Windows para RasClient