strongSwan IKEv2 + VPN agile Windows 7: quelle est la cause de l'erreur 13801

8

J'ai une instance AWS que je veux être un serveur VPN. Il connectera les clients Windows 7 à un réseau privé dans le cloud Amazon.

  • J'ai installé Ubuntu 12.04 et le strongswan-ikev2package.
  • ipsec version rapports Linux strongSwan U4.5.2/K3.2.0-52-virtual
  • Notez que le client et le serveur sont derrière NAT (le client car il se trouve sur un réseau de bureau local et le serveur car il se trouve dans le cloud d'Amazon). J'ai débloqué les ports UDP 500 et 4500 sur le tableau de bord Amazon et le pare-feu du client.
  • C'est /etc/ipsec.conf:

    config setup
        plutostart=no
    
    conn %default
        keyexchange=ikev2
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        dpdaction=clear
        dpddelay=300s
        rekey=no
    
    conn win7vpn
        left=%any
        leftsubnet=<amazon VPC CIDR block>
        leftauth=pubkey
        leftcert=openssl-cert.pem
        leftid=<vpn server public dns name>
        right=%any
        rightsourceip=<amazon private IP address, which elastic ip is forwarded to>
        rightauth=eap-mschapv2
        rightsendcert=never
        eap_identity=%any
        auto=add
    
  • Il s'agit de /etc/ipsec.secrets:

    : RSA openssl-key.rsa
    TESTDOMAIN\testuser : EAP "testpassword"
    
  • J'ai ajouté le certificat CA qui a signé le certificat d'hôte du serveur au magasin de certificats de la machine locale (et non de l'utilisateur) afin que Windows puisse authentifier le serveur.

J'essaie ensuite de me connecter au serveur en utilisant le client Windows 7 comme prescrit ici , à une exception près - j'utilise le nom DNS plutôt que l'adresse IP. J'entre le nom d'utilisateur, le domaine et le mot de passe dans mon fichier ipsec.secrets et il essaie de se connecter.

Lorsque c'est le cas, j'obtiens des journaux strongSwan qui ressemblent à ceci. Je les ai un peu agités pour la censure et la clarté; CLIENTPUB / CLIENTPRIV sont les adresses IP publiques et privées du client et AMAZONPRIV est l'adresse IP privée du serveur (qui est ce que l'IP publique du serveur - Amazon appelle cela une "Elastic IP" - transmet à).

Sep  4 00:16:17 localhost charon: 14[IKE] CLIENTPUB is initiating an IKE_SA
Sep  4 00:16:17 localhost charon: 14[NET] received packet: from CLIENTPUB[500] to AMAZONPRIV[500]
Sep  4 00:16:17 localhost charon: 14[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) ]
Sep  4 00:16:17 localhost charon: 14[IKE] CLIENTPUB is initiating an IKE_SA
Sep  4 00:16:17 localhost charon: 14[IKE] local host is behind NAT, sending keep alives
Sep  4 00:16:17 localhost charon: 14[IKE] remote host is behind NAT
Sep  4 00:16:17 localhost charon: 14[ENC] generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(MULT_AUTH) ]
Sep  4 00:16:17 localhost charon: 14[NET] sending packet: from AMAZONPRIV[500] to CLIENTPUB[500]
Sep  4 00:16:17 localhost charon: 15[NET] received packet: from CLIENTPUB[4500] to AMAZONPRIV[4500]
Sep  4 00:16:17 localhost charon: 15[ENC] unknown attribute type INTERNAL_IP4_SERVER
Sep  4 00:16:17 localhost charon: 15[ENC] parsed IKE_AUTH request 1 [ IDi CERTREQ N(MOBIKE_SUP) CP(ADDR DNS NBNS SRV) SA TSi TSr ]
Sep  4 00:16:17 localhost charon: 15[IKE] received cert request for "C=US, ST=TX, O=Test CA, CN=Test CA"
Sep  4 00:16:17 localhost charon: 15[IKE] received 316 cert requests for an unknown ca
Sep  4 00:16:17 localhost charon: 15[CFG] looking for peer configs matching AMAZONPRIV[%any]...CLIENTPUB[CLIENTPRIV]
Sep  4 00:16:17 localhost charon: 15[CFG] selected peer config 'dlpvpn'
Sep  4 00:16:17 localhost charon: 15[IKE] initiating EAP-Identity request
Sep  4 00:16:17 localhost charon: 15[IKE] peer supports MOBIKE
Sep  4 00:16:17 localhost charon: 15[IKE] authentication of 'C=US, ST=TX, O=DLP Test CA, CN=vpn.example.com' (myself) with RSA signature successful
Sep  4 00:16:17 localhost charon: 15[IKE] sending end entity cert "C=US, ST=TX, O=DLP Test CA, CN=vpn.example.com"
Sep  4 00:16:17 localhost charon: 15[ENC] generating IKE_AUTH response 1 [ IDr CERT AUTH EAP/REQ/ID ]
Sep  4 00:16:17 localhost charon: 15[NET] sending packet: from AMAZONPRIV[4500] to CLIENTPUB[4500]

À ce stade, Windows affiche immédiatement un message d'erreur:

Verifying user name and password...
Error 13801: IKE authentication credentials are unacceptable

Après quelques secondes, charon essaie à nouveau, puis ferme la connexion.

Sep  4 00:16:37 localhost charon: 16[IKE] sending keep alive
Sep  4 00:16:37 localhost charon: 16[NET] sending packet: from AMAZONPRIV[4500] to CLIENTPUB[4500]
Sep  4 00:16:47 localhost charon: 03[JOB] deleting half open IKE_SA after timeout

Et c'est tout.

Pour autant que je sache, je suis toutes les instructions sur le wiki strongSwan.

Qu'est-ce que je fais mal ici?

Edit: c'est définitivement un problème avec les certificats. J'ai désactivé les vérifications de validation étendues en modifiant le registre et en redémarrant comme décrit dans MSKB926182 (lol si vous vouliez un lien vers cela) et je peux maintenant me connecter à mon serveur VPN sans erreur. Je vais trouver comment générer des certificats qui satisfont aux exigences et ajouter une réponse. Merci à @ecdsa pour le pointeur vers la page cert sur le wiki strongSwan qui m'a fait pointer dans la bonne direction.

Micah R Ledbetter
la source
À quoi ressemble l'onglet de sécurité des propriétés VPN sur le client Windows 7? De plus, bien que ma configuration ne soit pas identique, j'ai IKEv2 travaillant avec les certificats dans le magasin de certificats de l'utilisateur actuel.
0xFE
Votre certificat de serveur répond-il à toutes les exigences ?
ecdsa
Si vous avez résolu votre propre problème, pensez à publier une réponse ci-dessous et à le marquer comme résolu.
Michael Hampton

Réponses:

6

Compris cela. @ecdsa m'a pointé dans la bonne direction, et j'ai finalement pu résoudre le problème en suivant ce guide .

ipsec pki --gen --type rsa --size 4096 --outform pem > vpnca.key.pem
ipsec pki --self --flag serverAuth --in vpnca.key.pem --type rsa --digest sha1 \
    --dn "C=US, O=Example Company, CN=Example VPN CA" --ca > vpnca.crt.der
ipsec pki --gen --type rsa --size 4096 --outform pem > vpn.example.com.key.pem
ipsec pki --pub --in vpn.example.com.key.pem --type rsa > vpn.example.com.csr
ipsec pki --issue --cacert vpnca.crt.der --cakey vpnca.key.pem --digest sha1 \
    --dn "C=US, O=Example Company, CN=vpn.example.com" \
    --san "vpn.example.com" --flag serverAuth --outform pem \
    < vpn.example.com.csr > vpn.example.com.crt.pem 
openssl rsa -in vpn.example.com.key.pem -out vpn.example.com.key.der -outform DER

cp vpnca.crt.der /etc/ipsec.d/cacerts
cp vpn.example.com.crt.pem /etc/ipsec.d/certs
cp vpn.example.com.key.der /etc/ipsec.d/private

À propos de l'erreur

Le message d'erreur était «Erreur 13801: les informations d'identification d'authentification IKE sont inacceptables», ce qui semblait que mes informations d'identification d'utilisateur ne fonctionnaient pas. Cependant, il s'agit d'un message sur l'authentification du serveur , qui est effectué (selon ma configuration) par le certificat SSL du serveur. Microsoft a publié une documentation sur le dépannage des connexions VPN IKEv2 qui répertorie les causes possibles de cette erreur:

  • Le certificat a expiré.
  • La racine approuvée pour le certificat n'est pas présente sur le client.
  • Le nom du sujet du certificat ne correspond pas à l'ordinateur distant.
  • Le certificat n'a pas les valeurs EKU (Enhanced Key Usage) requises attribuées.

Dans mon cas, mon problème était lié aux valeurs EKU. En suivant le guide que j'ai lié en haut, j'ai pu générer un certificat avec les valeurs EKU correctes, et cela a très bien fonctionné.

Pour résoudre ce problème, vous pouvez désactiver la vérification EKU sur votre client Windows (bien sûr, cela ne doit être effectué qu'à des fins de test):

  • lancement regedit
  • Aller vers HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\RasMan\Parameters
  • Ajoutez un DWORD appelé DisableIKENameEkuChecket définissez sa valeur sur1
  • La documentation Microsoft vous demande de redémarrer après avoir fait cela, mais je n'en avais pas besoin pour que cela prenne effet.
Micah R Ledbetter
la source
une autre cause possible: IP est utilisé dans cert, mais le nom d'hôte utilisé sur le client.
Larsen
ou le nom d'hôte se trouve dans le certificat, mais le client se connecte à son adresse IP. Solution:ipsec pki --isue ... --san @ipaddress
bouke
Après avoir suivi ces étapes, mon problème a finalement été que la racine de confiance a été installée au mauvais endroit, elle devrait se trouver dans "Ordinateur \ Autorités de certification racine de confiance", pas dans "Utilisateur actuel \ TRCA".
bouke
2

J'ai eu un problème identique et je l'ai résolu en m'assurant que j'avais la chaîne de certificats dans le fichier de certificat (certificat d'entité finale, autorité de certification intermédiaire, autorité de certification racine - dans cet ordre). TLS est amusant.

Après avoir redémarré strongSwan, cela a cessé de fonctionner, mais a recommencé à fonctionner lorsque j'ai déposé l'autorité de certification intermédiaire et racine dans /etc/ipsec.d/cacerts.

Zanchey
la source
0

Après une longue recherche, ce fil a fait fonctionner ma configuration Windows Phone 10 (WP10) avec IKEv2! Une chose à mentionner pourrait être que vous devez ./configurer votre Strongswan avec --enable-eap-identity --enable-eap-mschapv2 --enable-openssl (et probablement --enable-dhcp) pour avoir les plugins nécessaires. Et oui, vous devez obtenir les bons certificats (côté serveur - le client n'a besoin que de connaître l'autorité de certification racine du serveur).

Martin
la source