Eu testei o strongSwan VPN em um servidor Linux em um domínio do Windows Active Directory.
Eu consegui fazer com que uma PKI de camada única com autenticação EAP funcionasse, mas quando tento adicionar uma autoridade de certificação intermediária à configuração que se conecta à VPN, ela falha.
A VPN e ambas as CA's são do Debian 9 boxes.
Eu já tirei todo este domínio de teste e estou me preparando para começar do zero e queria saber se alguém tinha alguma opinião sobre o que eu poderia estar fazendo de errado.
Veja os comandos que executei para criar as CAs e o par de chaves do servidor.
Criando chave particular da CA raiz:
$ ipsec pki --gen --type rsa --size 4096 --outform pem > ca.key.pem
$ chmod 600 ca.key.pem
Criar certificado autoassinado:
$ 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
Criar chave privada intermediária da CA:
$ ipsec pki --gen --type rsa --size 4096 --outform pem > intca.key.pem
Gerar CSR intermediário da CA:
$ ipsec pki --pub --in intca.key.pem --type rsa > intca.csr
Assinar o CSR intermediário da CA:
$ 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
Crie a chave privada do servidor VPN e o 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
Assinar o certificado do servidor 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
Copio o certificado da CA raiz para /etc/ipsec.d/cacerts
, o certificado da VPN para /etc/ipsec.d/certs
e a chave do servidor VPN para /etc/ipsec.d/private
.
Eu adiciono a linha leftcert=/etc/ipsec.d/certs/vpn.testdomain.com.crt.pem
a ipsec.conf
. Bem como ponto ipsec.secrets
para a chave privada do servidor VPN.
O resto da configuração é o mesmo que o pki de camada única.