Часть 1.
Создаём сервер сертификации и сами сертификаты
!! Создаём группу, в которую будут помещать пользователи, подключающиеся с помощью !!сертификатов
aaa authorization network grouplist local
!! Вводим имя домена
ip domain name yourdomain.local
!! Включаем сервер http. Если на нём есть ACL и авторизация, то придётся её временно отключить.
!! no ip http access-class 23
!! no ip http authentication local
ip http server
!! Проверяем чтобы на роутере было верное время
sh clock
!! Генерируем сертификат для сервера сертификации. Имя сертификата (label) должно совпадать с !!именем будущего сервера сертификации
crypto key generate rsa general-keys modulus 4096 label gwname-ca exportable
!! Экспортируем пару ключей в память, задаём пароль
crypto key export rsa gwname-ca pem url nvram: 3des Pa$$w0rd
!! Создаём сам сервер сертификации
crypto pki server gwname-ca
database level names
no database archive
cdp-url http://ca.yourdomain.ru/cgi-bin/pkiclient.exe?operation=GetCRL
eku server-auth client-auth
issuer-name CN = gwname-ca, OU = yourdomain, O = yourdomain CJSC, L = Novosibirsk, ST = Lenina, C = RU
lifetime crl 24
no shutdown
!! Создаём сертификат для роутера
crypto key generate rsa general modulus 4096 exportable label router
!! Ассоциируем доменное имя с IP
Ip host ca.yourdomain.ru 64.233.165.100
!! Создаём trustpoint для роутера
crypto pki trustpoint router
source interface Gi0/0
enrollment url http://ca.yourdomain.ru
revocation-check none
serial-number
fqdn ca.yourdomain.ru
ip-address 64.233.165.100
subject-name CN = ca.yourdomain.ru, OU = yourdomain, O = yourdomain CJSC, L = Novosibirsk, ST = Lenina, C = RU
!! Регистрируем сертификат на сервере сертификации
crypto pki authenticate router
crypto pki enroll router
!! Смотрим запросы на регистрацию на сервере сертификации
do show crypto pki server gwname-ca requests
!! Разрешаем регистрацию
do crypto pki server gwname-ca grant <номер запроса>
На этом настройки CA закончены. Создан сервер сертификации и выписан сертификат на роутер. Внимание! Сертификат роутера очень важен, если к нему не будет доверия со стороны клиента, то IKEv2 соединение не будет установлено. В Windows 10 ошибка 1380. Другие ошибки тут - https://technet.microsoft.com/ru-ru/library/dd941612%28v=ws.10%29.aspx?f=255&MSPPError=-2147217396
!! Создаём сертификат для пользователя
crypto key generate rsa general modulus 4096 exportable label user@example.com
!! Создаём trustpoint для пользователя, чтобы зарегистрировать его сертификат на сервере
crypto pki trustpoint user@example.com
enrollment url http://ca.yourdomain.ru:80
fqdn none
ip-address none
revocation-check none
auto-enroll
hash sha512
subject-name CN = user@example.com, OU = yourdomain, O = yourdomain CJSC, L = Novosibirsk, ST = Lenina, C = RU
rsakeypair user@example.com
!! Регистрируем сертификат на сервере
crypto pki authenticate user@example.com
crypto pki enroll user@example.com
!! Смотрим запросы на регистрацию и регистрируем
do show crypto pki server gwname-ca requests
do crypto pki server gwname-ca grant <номер запроса>
!! Экспортируем цепочку сертификатов для пользователя на TFTP
crypto pki export user@example.com pkcs12 tftp://192.168.0.103/user.pfx password <password>
!! Или на флешку
crypto pki export user@example.com pkcs12 usbflash0:/user.pfx password <password>
!! Сертификат должен быть установлен на компьютере пользователя к контейнер Локальный компьютер!
!! После экспорта созданные сертификаты и трастпоинты можно удалить
crypto key zeroize rsa user@example.com
no crypto pki trustpoint user@example.com
Часть 2.
Настраиваем IKEv2
!! Создаём крипто-карту, по которой будем проверять только то что сертификат выдан именно !!нашим сервером
crypto pki certificate map staff-certificate-map 10
issuer-name co cn = gwname-ca
!! Создаём пул локальных адресов для выдачи пользователям VPN
ip local pool vpn-pool 192.168.6.100 192.168.6.200
!! Создаём политику авторизации ikev2
crypto ikev2 authorization policy ap-staff
pool vpn-pool
!! Настраиваем proposal в котором указываем какие алгоритмы шифрования, кэширования и DH !!группы мы поддерживаем.
crypto ikev2 proposal SHA1
encryption aes-cbc-256 aes-cbc-192 aes-cbc-128
integrity sha1 sha256 sha512
group 20 21 24 14 5 2
!! Привязываем proposal к политике ikev2
crypto ikev2 policy VPN
proposal SHA1
!! Создаём профиль ikev2, который затем пропишем в профиле ipsec
crypto ikev2 profile staff
match certificate staff-certificate-map
identity local dn
authentication remote rsa-sig
authentication local rsa-sig
pki trustpoint router
dpd 60 2 on-demand
aaa authorization group cert list grouplist ap-staff
virtual-template 4
!! Создаём transform-set с именем aes256-sha1 который и будет шифровать данные. Режим !!туннельный, то есть мы будем шифровать пакеты целиком, вместе с заголовками
crypto ipsec transform-set aes256-sha1 esp-aes 256 esp-sha-hmac
mode tunnel
!! Создаём профиль ipsec, который затем повесим на виртуальный интерфейс
crypto ipsec profile staff
set transform-set aes256-sha1
set ikev2-profile staff
!! Создаём виртуальный интерфейс. Указываем через какой интерфейс пускать трафик (в моём случае, это саб интерфейс VLAN 104). Переводим его в туннельный режим. И вешаем на него профиль ipsec.
interface Virtual-Template4 type tunnel
ip unnumbered GigabitEthernet0/2.104
ip nat inside
tunnel mode ipsec ipv4
tunnel protection ipsec profile staff
Полезные команды для диагностики
show crypt pki server Показывает текущие настройки сервера CA
show crypt pk certificates Показывает сертификаты в наличии
show crypt ikev2 Включает вывод всех сообщений связанных с ikev2
