In <Pine.BSF.3.96.980918184857.4060E-100000@woozle.rinet.ru> Dmitry Morozovsky (marck@rinet.ru) wrote:
DM> Приветствую.
DM> Сразу прошу прощения за некоторую оффтопичность. Если подскажете, куда c
DM> этим лучше -- буду благодарен.
DM> Итак, ситуация: есть SSL site, куда хочется пускать клиентов строго по
DM> списку. Есть local CA, выдающая сертификаты и подписывающая их. Все бы
DM> хорошо, но если есть клиент, у которого _уже_ есть валидный сертификат, то
DM> хотелось бы получить его, при необходимости подписать еще раз (добавиться в
DM> цепочку) и положить к себе в базу. Иначе, как только у блиента возникает
DM> более одного сертификата, при заходе на любой SSL site его будут спрашивать
DM> "а какой сертификат отдать?".
DM> Однако, рытье по документации к SSLeay & mod_ssl ничего похожего не
DM> обнаружило. Советы, отсылки к документам и проч. будут приняты с большой
DM> благодарностию.
Могу только дать совет: поставить на вход CGI, который будет всем этим
заведывать. Взять mod_ssl 2.1b4 (в 2.0 до CGI информация о сертификатах не
доходит), раскомментарить там передачу сертификата клиенту и либо выдавать
сертификат, либо подписывать и класть в базу... Вроде бы та же схема, что в
mod_ssl 2.1b4 используеются в самых последних Apache-SSL (1.24?). Правда в
некоторых *nix'ах вместо передачи сертификатов происходят разные ужасные вещи
(сертификаты передаются через Environment и Environment во многие килобайты
(и даже в мегабайты :-) нормально переваривается, к примеру, Linux'ом, а вот
во FreeBSD дело может потребовать разных вещей вплоть до перекомпиляции ядра)
Ralf S. Engelschall:
-- cut --
At least the functionality to provide the client certificate (not the whole
chain) is already present with mod_ssl 2.1b2. But it's "#if 0"'ed because
currently my Apache hangs when I create environment variables of this huge
size (>1000 bytes). The format is the PEM encoded certificate, BTW. If you're
interested in playing with this you can grab 2.1b2 and remove the two "#if 0"
in ssl_engine_kernel.c. Then you get an SSL_CLIENT_CERT variable.
-- cut --
"Russian Apache" includes software developed
by the Apache Group for use in the Apache HTTP server project
(http://www.apache.org/) See
Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C)
1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.