Я хотел бы проверить "настраиваемое" поле сертификата клиента непосредственно с помощью NGINX, прежде чем возвращать его на фактическую страницу.
Как я понял отсюда: http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_verify_client это легко достижимо для таких полей, как DN субъекта, DN эмитента, поиск клиента, дата окончания и т. д. Но есть ли способ проверить пользовательское поле, которое мой CA добавляет к сертификату?
Кстати PKI работает, nginx не проверяет эти данные. Он просто проверяет, подписан ли сертификат (напрямую или через промежуточные сертификаты) доверенным центром сертификации. Задача CA - проверить эти данные. Обычно последняя часть DN субъекта (часть CN или emailAddress) каким-то образом проверяется.
nginx может извлекать из сертификата некоторые стандартные расширения, но если вы хотите прочитать нестандартные, вам нужно добавить весь сертификат в качестве заголовка и отправить его в свое приложение примерно так:
proxy_set_header X-Client-Cert $ssl_client_escaped_cert