Для проекта как часть Европейской инфраструктуры сетки (EGI) нам нужна клиентская проверка сертификата SSL для сервиса, работающего nginx. Как существует несколько корневых АВАРИЙ, позволенных в EGI, нам нужен nginx для проверки их всех во время клиентской проверки сертификата. В документации nginx я мог только найти параметр ssl_client_certificate
который позволяет указывать всего один файл, содержащий корневой сертификат.
Существует ли способ указать больше чем один корневой CA для клиентской проверки сертификата в nginx, или я должен использовать Apache для этого?
Nginx поддерживает несколько корневых сертификатов. Просто поместите несколько корневых сертификатов CA в файл, указанный в директиве ssl_client_certificate
. Обратите внимание, что в документах явно указано «сертификаты» (множественное число).
Это соображение , почему nginx не поддерживает ssl_client_certificate в каталоге (как это делает Apache)
Разница между "файлом сертификата" и "путем к сертификату" не связана с запуском чего-либо после обновления сертификатов или нет (в обоих случаях вам нужно что-то обновить, либо cat в отдельный файл, либо скрипт c_rehash для создания символических ссылок в случай CApath). Разница заключается в сертификатах в памяти и сертификатах на диске, и последний подразумевает системные вызовы и доступ к диску при каждой проверке сертификата.
Поскольку nginx предназначен для работы при высоких нагрузках, с большим количеством запросов (и рукопожатий) в секунду, он использует вариант CAfile. А поскольку перезагрузка конфигурации nginx происходит без проблем, маловероятно, что вариант CApath добавит какое-либо дополнительное значение.
Максим Дунин