2013-06-20 3 views
0

Мое веб-приложение проверяет подлинность пользователей с помощью предварительной аутентификации (каждый запрос включает сертификат на стороне клиента, который сервер использует для аутентификации запроса).Возможная производительность узкого места в системе Client-Cert

Установка: веб-сервер Apache, сервер приложений Tomcat, разъем mod_jk

  1. Клиент попадает сервер Apache и выбирает сертификат
  2. SSL рукопожатия начинается там, где браузер клиента проверяет сертификат сервера, а сервер гарантирует, что passed- клиента в сертификате действует
  3. После SSL установлен, сервер передает SSL_CLIENT_CERT на Tomcat для проверки подлинности

EDIT:

Кроме того, сертификат клиента клиента проверяется на Список отзыва сертификатов (CRL).

Дополнительное время, необходимое для загрузки CRL или CRL Delta, а затем проверить, что сертификат клиента не был отозван, вероятно, потребует много времени?

ответ

1

Конечно, но это происходит не так часто, как вы думаете. Сервер почти наверняка кэширует CRL и не восстанавливает его на некоторый интервал, как час, и ваша посылка о том, что сертификат клиента отправляется с каждым запросом, также неверна из-за (1) HTTP keepalive и (2) SSL кеширование сеансов, которое повторно использует один и тот же сеанс SSL для любого периода времени, настроенного на сервере, возможно, 10-15 минут, может быть, также час, может быть, даже день.

+0

Используя ActivClient (программное обеспечение для чтения карт), он несколько раз мигает на панели задач, то есть для нескольких HTTP-запросов, когда я ударил свою веб-страницу. По словам другого разработчика на моей работе, он сказал, что он моргает всякий раз, когда он считывает учетные данные карты. Всякий раз, когда учетные данные читаются, он добавляет задержку (возможно, 1 секунду или около того на запрос). –

+0

Что такое клиентское программное обеспечение? Браузер? Ваш код? – EJP

+0

Как я понимаю, поскольку я использую предварительную аутентификацию Spring Security, каждый запрос аутентифицируется, то есть каждый запрос уже аутентифицирован. Spring Security просто захватывает пользователя/принципала из HTTP-запроса. Не все мои HTTP-запросы требуют полного сертификата клиента, однако их довольно много. В результате я считаю, что ответ «мой код». –