Le plus chiant ça reste d'avoir des certificats générés correctement. Du coup je me suis fait des scripts bash (3 ou 4 lignes chacun, voir ci-dessous) que j'exécute sur une machine (sous Linux, distrib. Ubuntu), et en l'état les certificats générés me permettent de me connecter avec mes équipements Apple (iPad, iPhone et MacBook Pro sous macOS):
Pou générer l'authorité de certification. genCa.sh:
#!/bin/bash
ipsec pki --gen --type rsa --size 4096 --outform pem > Certs/CA/ca.key
ipsec pki --self --ca --lifetime 3650 --in Certs/CA/ca.key --type rsa --dn "C=FR, O=Zoc, CN=Zoc VPN CA" --outform pem > Certs/CA/ca.pem
chmod 600 Certs/CA/ca.key
Ensuite, pour générer le certificat du serveur. genServer.sh:
#!/bin/bash
SERVER_NAME=$1
ipsec pki --gen --type rsa --size 2048 --outform pem > Certs/${SERVER_NAME}.key
chmod 600 Certs/${SERVER_NAME}.key
ipsec pki --pub --in Certs/${SERVER_NAME}.key --type rsa | ipsec pki --issue --lifetime 730 --cacert Certs/CA/ca.pem --cakey Certs/CA/ca.key --dn "C=FR, O=Zoc, CN=${SERVER_NAME}" --san ${SERVER_NAME} --flag serverAuth --flag ikeIntermediate --outform pem > Certs/${SERVER_NAME}.pem
Et enfin pour les clients. genClient.sh:
#!/bin/bash
CLIENT_NAME=$1
ipsec pki --gen --type rsa --size 2048 --outform pem > Certs/${CLIENT_NAME}.key
chmod 600 Certs/${CLIENT_NAME}.key
ipsec pki --pub --in Certs/${CLIENT_NAME}.key --type rsa | ipsec pki --issue --lifetime 730 --cacert Certs/CA/ca.pem --cakey Certs/CA/ca.key --dn "C=FR, O=Zoc, CN=${CLIENT_NAME}" --san ${CLIENT_NAME} --outform pem > Certs/${CLIENT_NAME}.pem
openssl pkcs12 -in Certs/${CLIENT_NAME}.pem -inkey Certs/${CLIENT_NAME}.key -certfile Certs/CA/ca.pem -export -out Certs/${CLIENT_NAME}.p12
Sur mon ERL, les certificats sont dans /config/auth, et j'ai mis les chemins absolus dans la config, histoire d'éviter de devoir se poser trop de questions
Par contre attention, avec la version actuelle du paquet "agile vpn", c'est (comme je l'indique dans le post sur le forum d'ubnt et dans un bug request sur le github, tous les 2 restés sans réponse..) openbar pour les clients VPN. Quand la connexion IKEv2 monte, strongswan rajoute des règles iptables FORWARD
avant celles existantes, et donc les clients VPN peuvent bypasser toutes les règles firewall en place... Personnellement ça ne me pose un problème parce que du coup mon VLAN de management est accessible à tous les clients...
Bon, sinon je pense qu'on s'éloigne un peu trop du sujet initial de ce fil, et du coup ça vaudrait peut-être le coup d'en créer un dédié à IKEv2 sur l'ERL
Pour ma config, j'ai ça:
vpn {
ipsec {
auto-firewall-nat-exclude disable
ipsec-interfaces {
interface eth1.832
}
nat-networks {
allowed-network 0.0.0.0/0 {
}
}
nat-traversal enable
remote-access {
authentication {
mode x509
}
client-ip-pool {
subnet 192.168.200.0/24
}
compatibility-mode enable
dhcp-interface eth1.832
dns-servers {
server-1 192.168.66.11
server-2 192.168.66.12
}
esp-settings {
proposal 1 {
encryption aes128
hash sha1
}
}
ike-settings {
authentication {
mode x509
x509 {
ca-cert-file /config/auth/ca.pem
local-id home.zoc.me
remote-id "*.vpn.zoc.me"
remote-ca-cert-file /config/auth/ca.pem
server-cert-file /config/auth/home.zoc.me.pem
server-key-file /config/auth/home.zoc.me.key
server-key-type rsa
}
}
fragmentation enable
ike-lifetime 86400
operating-mode ikev2-mobike
proposal 1 {
encryption aes128
hash sha1
}
}
inactivity 28800
}
}
}