Consegui configurar uma conexão IPsec entre dois hosts (virtuais) no modo de transporte e agora quero que o servidor valide o certificado do cliente com o OCSP. Em um terceiro host, executei um respondente do OCSP ( openssl ocsp -port 80 ...
). Eu posso ver como o servidor é capaz de alcançar o OCSP, enviar uma consulta e obter uma resposta, mas finalmente a verificação falha.
Veja o que os registros dizem no servidor (o respondedor IPsec):
charon: 01[CFG] checking certificate status of "C=ES, ST=Gipuzkoa, L=Donostia-San Sebastian, O=Tecnalia, CN=client@localhost"
charon: 01[CFG] requesting ocsp status from 'http://ocsp.localhost' ...
charon: 01[CFG] using trusted ca certificate "C=ES, ST=Gipuzkoa, L=Donostia-San Sebastian, O=Tecnalia, CN=Tecnalia Root CA"
charon: 01[CFG] reached self-signed root ca with a path length of 0
charon: 01[CFG] using trusted certificate "C=ES, ST=Gipuzkoa, L=Donostia-San Sebastian, O=Tecnalia, CN=ocsp.localhost"
charon: 01[CFG] using certificate "C=ES, ST=Gipuzkoa, L=Donostia-San Sebastian, O=Tecnalia, CN=ocsp.localhost"
charon: 01[CFG] no issuer certificate found for "C=ES, ST=Gipuzkoa, L=Donostia-San Sebastian, O=Tecnalia, CN=ocsp.localhost"
charon: 01[CFG] ocsp response verification failed
charon: 01[CFG] ocsp check failed, fallback to crl
Por conveniência, eu repliquei os mesmos arquivos de certificado em todos os hosts (saída aparada):
/etc/ipsec.d# ls -lR
./cacerts:
total 4
-rw-r--r-- 1 root root 1367 Nov 2 09:53 ca.cert.pem
./certs:
total 8
-rw-r--r-- 1 root root 1432 Nov 2 09:53 client.cert.pem
-rw-r--r-- 1 root root 1700 Nov 2 09:53 localhost.cert.pem
./crls:
total 0
./ocspcerts:
total 4
-rw-r--r-- 1 root root 1379 Nov 10 09:32 ocsp.cert.pem
É um caminho muito simples em que uma CA ( ca.cert.pem
) assina todos os certificados - o certificado do servidor ( localhost.cert.pem
), o cliente ( client.cert.pem
) e o usado pelo respondente do OCSP ( ocsp.cert.pem
).
Isso é o que eu tenho no ipsec.conf
do servidor:
ca strongswan-ca
cacert=ca.cert.pem
ocspuri=http://ocsp.localhost
auto=add
Acho que tudo está em torno desse erro desagradável de "nenhum certificado de emissor encontrado", mas até agora não é possível dizer por que isso está acontecendo. Se eu consultar o respondente do OCSP com o openssl, ele não fornecerá erros de verificação.