Перейти к содержимому
Калькуляторы

Вопрос по апачу

Есть веб-сервер на PHP, работающий на Apache и использующий HTTPS и клиентские сертификаты.

В конфигурацию добавлена строчка SSLOptions +ExportCertData +StdEnvVars, благодаря которой веб-сервер в переменных окружения видит пачку соответствующих переменных SSL_SERVER_* и SSL_CLIENT_*. Все работает, но это снижает производительность. При этом меня в клиентском сертификате интересует обязательно Email и желательно CN и T.

Можно ли экспортировать только эти три поля?

Через установку отдельных переменных (SetEnv) это работает еще медленнее, чем StdEnvVars.

Сейчас работает "костыль" в виде директивы SSLUserName SSL_CLIENT_S_DN_Email и использования переменной окружения REMOTE_USER, программу-минимум он выполняет. Но хотелось бы получить CN и T.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что значит "работает медленнее"? Это как вы замеряли?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если без ab-тестов, то навскидку раза в 3-4 медленнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Апач разбирает структуру x509 библиотекой openssl. Я не знаю никакой другой библиотеки, которая будет разбирать структуру быстрее (не забываем, что это делается каждый раз при https коннекте независимо от того, есть переменные, или их нет). Переменные окружения она делает сразу линейным списком, что делается практически со скоростью выделения памяти malloc, и по сути, особо не зависит от количества переменных. Честно говоря, я даже не знаю, чем можно измерить накладные расходы на разбор структуры сертификата и заполнение переменных. Я думаю, что текст php страницы интерпретируются на порядки дольше, чем происходят обсуждаемые процедуры.

 

Это я к тому, что ищите, в чем может быть проблема. Может что-то там с чтением этих переменных скриптом или еще что? Апач точно не должен тормозить по этому поводу.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

11 hours ago, alibek said:

Можно ли экспортировать только эти три поля?

Не обратил внимание на этот вопрос.
 

Если вам не нужен сам сертификат, то -ExportCertData, а если хотите некоторых переменных их стандартного набораSSL, Можете похачить апачу. Либо закомментировав ненужные переменные, либо добавив собственный define, либо вообще добавив собственный параметр в конфиг для SSLOptions:

 

modules/ssl/ssl_engine_kernel.c:

 

static const char *ssl_hook_Fixup_vars[] = {
    "SSL_VERSION_INTERFACE",
    "SSL_VERSION_LIBRARY",
    "SSL_PROTOCOL",
    "SSL_SECURE_RENEG",
    "SSL_COMPRESS_METHOD",
    "SSL_CIPHER",
    "SSL_CIPHER_EXPORT",
    "SSL_CIPHER_USEKEYSIZE",
    "SSL_CIPHER_ALGKEYSIZE",
    "SSL_CLIENT_VERIFY",
    "SSL_CLIENT_M_VERSION",
    "SSL_CLIENT_M_SERIAL",
    "SSL_CLIENT_V_START",
    "SSL_CLIENT_V_END",
    "SSL_CLIENT_V_REMAIN",
    "SSL_CLIENT_S_DN",
    "SSL_CLIENT_I_DN",
    "SSL_CLIENT_A_KEY",
    "SSL_CLIENT_A_SIG",
    "SSL_SERVER_M_VERSION",
    "SSL_SERVER_M_SERIAL",
    "SSL_SERVER_V_START",
    "SSL_SERVER_V_END",
    "SSL_SERVER_S_DN",
    "SSL_SERVER_I_DN",
    "SSL_SERVER_A_KEY",
    "SSL_SERVER_A_SIG",
    "SSL_SESSION_ID",
    "SSL_SESSION_RESUMED",
#ifdef HAVE_SRP
    "SSL_SRP_USER",
    "SSL_SRP_USERINFO",
#endif
    NULL
};

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мигрируйте на nginx + php-fpm/ngunit, никаких перспектив у апача нет, ровно как и у тех кто только им пользуется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

10 minutes ago, Ivan_83 said:

Мигрируйте на nginx + php-fpm/ngunit, никаких перспектив у апача нет, ровно как и у тех кто только им пользуется.

Опаздал с комментарием, хотел ровно тоже самое написать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

11 hours ago, Ivan_83 said:

Мигрируйте на nginx + php-fpm/ngunit, никаких перспектив у апача нет, ровно как и у тех кто только им пользуется.

Проверил... Ага, я на НАГ'е. А показалось, что на мастер-х'е. :) 

 

А так да, переходите...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.