Мне удалось установить соединение IPsec между двумя (виртуальными) хостами в транспортном режиме, и теперь я хочу, чтобы сервер проверил сертификат клиента с помощью OCSP. На третьем хосте я запустил ответчик OCSP (openssl ocsp -port 80 ...
). Я вижу, как сервер может связаться с OCSP, отправить запрос и получить ответ, но, в конце концов, проверка не выполняется.
Вот что говорят журналы на сервере (ответчике 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
Для удобства я реплицировал одинаковые файлы сертификатов на всех хостах (вывод обрезан):
/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
Это очень простой путь, по которому CA (ca.cert.pem
) подписывает все сертификаты - сертификат сервера (localhost.cert.pem
), клиентский (client.cert.pem
) и тот, который используется респондентом OCSP (ocsp.cert.pem
).
Это то, что у меня на сервере ipsec.conf
:
ca strongswan-ca
cacert=ca.cert.pem
ocspuri=http://ocsp.localhost
auto=add
Я думаю, что все связано с этой неприятной ошибкой «сертификат эмитента не найден», но пока не могу сказать, почему это происходит. Если я запрашиваю ответчика OCSP с помощью openssl, он не дает никаких ошибок проверки.
Что ж, оказывается, что это
Для удобства я скопировал одинаковые файлы сертификатов на всех хостах.
и это
Если я запрашиваю ответчика OCSP с помощью openssl, он не дает никаких ошибок проверки
были, ну, ложными. В какой-то момент я испортил свои ключи, и сертификат / ключ OCSP на сервере OCSP были другими, чем на других машинах. Так что @ecdsa совершенно прав в своем комментарии.
Все в порядке с моей опубликованной конфигурацией, и как только я снова восстановил все ключи и сертификаты, все работало нормально.