У меня есть экземпляр AWS, который я хочу использовать в качестве VPN-сервера. Он подключит клиентов Windows 7 к частной сети в облаке Amazon.
strongswan-ikev2
пакет. ipsec version
отчеты Linux strongSwan U4.5.2/K3.2.0-52-virtual
Это /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
Это /etc/ipsec.secrets:
: RSA openssl-key.rsa
TESTDOMAIN\testuser : EAP "testpassword"
Я добавил сертификат CA, который подписал сертификат хоста сервера, в хранилище сертификатов локального компьютера (не пользователя), чтобы Windows могла аутентифицировать сервер.
Затем я пытаюсь подключиться к серверу с помощью клиента Windows 7 в соответствии с предписаниями. Вот, за одним исключением - я использую DNS-имя, а не IP-адрес. Я ввожу имя пользователя, домен и пароль в свой файл ipsec.secrets, и он пытается подключиться.
Когда это происходит, я получаю журналы strongSwan, которые выглядят следующим образом. Я немного изменил их для цензуры и ясности; CLIENTPUB / CLIENTPRIV - это общедоступный и частный IP-адреса клиента, а AMAZONPRIV - это частный IP-адрес сервера (который является общедоступным IP-адресом сервера - Amazon называет это «эластичным IP-адресом» - для пересылки).
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]
В этот момент Windows сразу же выдает сообщение об ошибке:
Verifying user name and password...
Error 13801: IKE authentication credentials are unacceptable
Через несколько секунд Харон пытается снова, а затем закрывает соединение.
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
И это все.
Насколько я могу судить, я слежу за всеми инструкции на вики-странице strongSwan.
Что я здесь делаю не так?
Изменить: это определенно проблема с сертификатами. Я отключил расширенные проверки, отредактировав реестр и перезагрузившись, как описано в MSKB926182 (лол, если вам нужна ссылка на это), и теперь я могу без ошибок подключиться к своему VPN-серверу. Я выясню, как сгенерировать сертификаты, удовлетворяющие требованиям, и добавлю ответ. Спасибо @ecdsa за указатель на страницу сертификата в вики strongSwan, который указал мне правильное направление.
Разобрался в этом. @ecdsa указал мне правильное направление, и я наконец смог решить проблему, выполнив это руководство.
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
Сообщение об ошибке было «Ошибка 13801: учетные данные для аутентификации IKE недопустимы», что звучало как будто мои учетные данные не работали. Однако это сообщение об аутентификации сервер, что выполняется (согласно моей конфигурации) SSL-сертификатом сервера. Microsoft опубликовала документацию по Устранение неполадок с подключениями IKEv2 VPN в котором перечислены возможные причины этой ошибки:
В моем случае моя проблема была связана со значениями EKU. Следуя руководству, которое я привел вверху, я смог сгенерировать сертификат с правильными значениями EKU, и он отлично сработал.
Чтобы устранить эту проблему, вы можете отключить проверку EKU на своем клиенте Windows (конечно, это следует делать только для тестирования):
regedit
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\RasMan\Parameters
DisableIKENameEkuCheck
и установите его значение на 1
У меня была идентичная проблема, и я решил ее, убедившись, что у меня есть цепочка сертификатов в файле сертификата (сертификат конечного объекта, промежуточный ЦС, корневой ЦС - в таком порядке). TLS - это весело.
После перезапуска strongSwan это перестало работать, но снова заработало, когда я сбросил промежуточный и корневой ЦС в /etc/ipsec.d/cacerts
.
После долгих поисков эта ветка получила мою конфигурацию Windows Phone 10 (WP10), работающую с IKEv2! Следует упомянуть, что вам нужно ./ настроить свой Strongswan с помощью --enable-eap-identity --enable-eap-mschapv2 --enable-openssl (и, вероятно, --enable-dhcp), чтобы иметь необходимые плагины. И да, вам нужно правильно получить сертификаты (на стороне сервера - клиенту нужно знать только корневой ЦС сервера).