Назад | Перейти на главную страницу

Промежуточный центр сертификации strongSwan VPN

Я тестировал strongSwan VPN на сервере Linux в домене Windows Active Directory.

Мне удалось заставить работать одноуровневую PKI с аутентификацией EAP, но когда я пытаюсь добавить промежуточный центр сертификации в настройку, подключение к VPN не удается.

VPN и оба CA - это коробки Debian 9.

Я уже отключил весь этот тестовый домен, и я готовлюсь начать все с нуля, и мне было интересно, есть ли у кого-нибудь какие-нибудь мнения о том, что я делаю неправильно.

Вот команды, которые я выполнил для создания пары ключей CA и сервера.

Создание закрытого ключа корневого ЦС:

$ ipsec pki --gen --type rsa --size 4096 --outform pem > ca.key.pem
$ chmod 600 ca.key.pem

Создать самоподписанный сертификат:

$ ipsec pki --self --flag serverAuth --in ca.key.pem \ 
  --type rsa --digest sha256 \
  --dn "C=US, O=IT_Testing, CN=VPN Root CA" --ca > ca.crt.der

Создайте промежуточный закрытый ключ CA:

$ ipsec pki --gen --type rsa --size 4096 --outform pem > intca.key.pem

Сгенерируйте промежуточный CA CSR:

$ ipsec pki --pub --in intca.key.pem --type rsa >  intca.csr

Подпишите промежуточный CA CSR:

$ ipsec pki --issue --cacert ca.crt.der \ 
  --cakey ca.key.pem --digest sha256 \
  --dn "C=US, O=IT_Testing, CN=INT CA" \
  --san "intca.testdomain.com" --flag serverAuth \ 
  --flag ikeIntermediate --outform pem \
  < intca.csr > intca.crt.pem

Создайте закрытый ключ VPN-сервера и CSR:

$ ipsec pki --gen --type rsa --size 2048 --outform pem > vpn.testdomain.com.key.pem

$ ipsec pki --pub --in vpn.testdomian.com.key.pem --type rsa > vpn.testdomain.com.csr

Подпишите сертификат VPN-сервера:

$ ipsec pki --issue --cacert intca.crt.pem \ 
  --cakey intca.key.pem --digest sha256 \
  --dn "C=US, O=IT_Testing, CN=vpn.testdomain.com" \
  --san "vpn.testdomain.com" --flag serverAuth --outform pem \
  < vpn.testdomain.com.csr > vpn.testdomain.com.crt.pem

Копирую сертификат корневого ЦС в /etc/ipsec.d/cacerts, сертификат VPN для /etc/ipsec.d/certsи ключ сервера VPN для /etc/ipsec.d/private.

Я добавляю строку leftcert=/etc/ipsec.d/certs/vpn.testdomain.com.crt.pem к ipsec.conf. Как и точка ipsec.secrets к закрытому ключу VPN-сервера.

В остальном конфиг такой же, как у рабочего одноуровневого pki.

При выдаче промежуточного сертификата CA убедитесь, что вы добавили --ca в командную строку, чтобы добавить CA basicConstraint и фактически создать сертификат CA.

И не добавляйте serverAuth и ikeIntermediate флаги к нему, только добавьте их в сертификат сервера. ikeIntermediate не относится к промежуточным сертификатам CA, а к промежуточным системам IPsec, и, вероятно, нет необходимости добавлять его больше (это было только определено в проекте и я думаю, что это требовалось только очень старой версии macOS).