Назад | Перейти на главную страницу

Проверка клиентов SSL с использованием списка авторизованных сертификатов вместо центра сертификации

Можно ли настроить Apache (или любой другой сервер с поддержкой SSL), чтобы он принимал соединения только от клиентов, представляющих сертификат из заранее определенного списка? Эти сертификаты могут быть подписаны любым ЦС (и могут быть самозаверяющими).

Некоторое время назад я пытался получить проверку сертификата клиента, работающую в системе EPP реестра доменов, в котором я работаю. В Спецификация протокола EPP требует использования «взаимной строгой аутентификации клиент-сервер». На практике это означает, что оба клиента и сервер должен проверить сертификат другого однорангового узла в сеансе.

Мы создали частный центр сертификации и попросили регистраторов предоставить CSR, которые мы затем подписали. Нам это показалось самым простым решением, но многие наши регистраторы возражали: они привыкли получать сертификат клиента из центра сертификации и отправлять этот сертификат в реестр. Поэтому нам пришлось отказаться от системы. Я пытался найти способ реализовать эту систему на нашем сервере, который основан на mod_epp модуль для Apache.

Возможно, можно будет использовать только основной mod_ssl, используя SSLRequire. Я не уверен, какая именно переменная SSL вам нужна, но должно работать что-то вроде этого:

SSLRequire% {SSL_CLIENT_S_DN_UID} в {файле ("/ tmp / list")}

В качестве альтернативы вы можете сопоставить некоторый атрибут сертификата с именем пользователя, которое обычно поступает из HTTP-аутентификации (ограничения типа .htaccess):

.htaccess:

SSLOptions + FakeBasicAuth SSLUserName SSL_CLIENT_S_DN_CN AuthGroupFile / tmp / SSL_Groups Требовать группу my-users

/ tmp / SSL_Groups:

мои-пользователи: uid = bob, dc = site, dc = com uid = jane, dc = site, dc = com

Опять же, я не на 100% понимаю, как выглядит SSL_CLIENT_S_DN_CN, но вы поняли.

У вас должна быть возможность настроить каталог со всеми сертификатами CA, которым вы доверяете, а затем указать на это с помощью SSLCACertificatePath директиву, чтобы вы могли пройти аутентификацию на основе любого сертификата. Затем, как сказал Джефф, используйте SSLRequire для ограничения доступа к набору разрешенных сертификатов.

Если в вашей системе еще не установлен набор общих сертификатов ЦС, вы можете скопировать их откуда-нибудь еще. Debian CA-сертификаты пакет может быть хорошей отправной точкой.