Apache Won& #39;t Request My SSL Client Certificate

Во-первых, обратите внимание, что я новичок в настройке SSL. В прошлом мне всегда везло, что у меня был ИТ-отдел, который заблаговременно настраивал это для меня. Так что будьте готовы к тому, что мне может понадобиться уточнить некоторые из ваших ответов. =)

Что я пытаюсь сделать

Я настраиваю -внутренний веб-сайт компании для сотрудников. Например, будет стартовая страница браузера, на которой отображается контент, настроенный для каждого сотрудника. Таким образом, мне нужно иметь возможность идентифицировать упомянутого сотрудника, не требуя имени пользователя/пароля или других подсказок (один раз -установка времени в порядке; Я просто не хочу, чтобы их каждый раз запрашивали ). Естественно, SSL кажется лучшим способом сделать это.

У меня будет настройка базы данных MySQL для связывания учетных записей «пользователей» с SSL _КЛИЕНТ _M _ПОСЛЕДОВАТЕЛЬНЫЙ СЕРИЙ и SSL _КЛИЕНТ _I _DN, которым я являюсь предполагается, что для каждого клиентского сертификата будет уникальным (? ). Я почерпнул эту идею из этой статьи:http://cweiske.de/tagebuch/ssl-client-certificates.htm

Когда пользователь впервые заходит на внутренний веб-сайт, у него не будет сертификата (Я НЕ хочу генерировать их вручную для клиентов! ), в этом случае $ _SERVER["SSL _CLIENT _VERIFY"] == "NONE". Если это произойдет, он перейдет на страницу настройки учетной записи пользователя,который будет включать в себя шаг, на котором PHP генерирует сертификат клиента SSL и отправляет его в браузер для установки пользователем. Красиво и просто. Затем пользователь устанавливает сертификат, создается ассоциация, и после перезапуска браузера (на всякий случай )пользователь возвращается на внутренний веб-сайт.

В этот момент Apache должен запросить сертификат клиента, который затем отправит браузер. Затем сценарий PHP анализирует необходимые переменные $ _SERVER, сравнивает их с базой данных MySQL, и все получают удовольствие. Опять же красиво и просто.

Что пока работает

У меня установлены сертификаты стороны сервера -. И да, они само -подписаны (по понятным причинам ). У Apache установлен мод _ssl, и все работает нормально. Я создал PHP-скрипт, который просто выгружает массив $_SERVER, и все значения ключей SSL _SERVER _*соответствуют созданному для него сертификату.

Проблема

Я не могу заставить клиентские сертификаты работать! В том же PHP-скрипте, независимо от того, что я делаю, SSL _CLIENT _VERIFY == "NONE" и другие ключи SSL _CLIENT _*отсутствуют. Вот что происходит, если в ssl.conf для SSLVerifyClient задано необязательное значение. Согласно каждому учебнику, который я читал, все они говорят, что веб-сервер должен запрашивать у браузера сертификат клиента. Дело в том, что я не могу заставить его сделать это! Он просто переходит прямо к PHP-скрипту и предполагает, что у меня вообще нет клиентских сертификатов. Это происходит в Firefox, Chrome и IE.

Итак, я попытался установить для SSLVerifyClient требуемое значение и перезапустил веб-сервер. С этой опцией я даже не могу установить SSL-соединение. Firefox просто сообщает, что соединение было сброшено (другие браузеры также отображают свои версии этой ошибки ). Странно то, что журналы не показывают НИКАКОЙ активности при этих попытках подключения! т.е. журнал доступа _, журнал ошибок _, ssl _журнал доступа _,ssl _ошибка _журнал, И ssl _запрос _журнал все не показывают НИЧЕГО ; как будто и попытки не было. Это расстраивает, потому что это означает, что у меня даже нет сообщения об ошибке, с которым можно работать. Просто пассивный веб-сервер -агрессивно говорит мне идти к черту.

Я попытался сгенерировать/установить собственный клиентский сертификат вручную с помощью расширения PHP OpenSSL. Сертификат установился просто отлично, хотя я не могу найти никакой информации о том, как связать этот сертификат с серверным (, предполагая, что мне это даже нужно? ). Кроме того, в любом случае это не имеет значения, потому что Apache по-прежнему даже не будет запрашивать сертификат клиента, если установлен необязательный параметр. И если установлено требование, оно просто взрывается без объяснения причин. В любом случае мне нужно, чтобы эта схема работала как необязательная.

Окружающая среда

ОС :CentOS 5.7 64 -бит (VirtualBox)

Apache :2.2.3

PHP :5.3.10

Я предполагаю вам может понадобиться дополнительная информация, чтобы помочь мне, поэтому, пожалуйста, спросите! Я предоставлю тебе все, что тебе нужно.

Подводя итог, мне нужно знать, как заставить Apache запрашивать клиентский сертификат SSL с учетом описанных выше условий. Кроме того, если есть какие-либо специальные подписи/и т. д., которые необходимо выполнить, чтобы снова сделать сертификат клиента «совместимым» с сертификатом сервера (, БЕЗ выполнения этого вручную через оболочку для каждого сертификата клиента! ), это мне тоже нужно знать.

На данный момент я на 100% застрял на этом. Не могу найти ничего даже отдаленно полезного в Google. Любая помощь, которую вы можете оказать в этом, будет ОЧЕНЬ оценена!! Спасибо! =)

15
задан Kris Craig 20 April 2012 в 19:35
поделиться