Последнее время к нам все чаще обращаются с вопросами внедрения поддержки на UNIX‑серверах TLS-соединения, использующего алгоритмы ГОСТ. В связи с этим нашей компанией был реализован криптографический модуль (ENGINE) gost_capi, представляющий из себя библиотеку OpenSSL, которая обеспечивает поддержку отечественных алгоритмов, используя криптопровайдер КриптоПро CSP.
Библиотека gost_capi может быть использована для задач, требующих поддержки ключей и алгоритмов ГОСТ, в частности, для реализации защищенных SSL/TLS соединений в веб-серверах, поддерживающих загрузку ключей из OpenSSL engine, таких как Apache и nginx. В этой статье мы уделим внимание nginx как одному из самых распространённых веб-серверов с открытым исходным кодом.
Одна из наиболее удобных на данный момент схем использования нашей библиотеки:
nginx + OpenSSL + gost_capi + КриптоПро CSP
Одновременная работа с ГОСТ и RSA
Остановимся подробнее на одной из интересных функций nginx, доступных при работе с gost_capi — возможности обеспечивать одновременную работу сайта с ГОСТ и RSA.
Под "одновременной работой" подразумевается, что при наличии у пользователя поддержки ГОСТ в его браузере открывается сайт с конфигурацией ГОСТ, а в случае отсутствия поддержки ГОСТ — сайт с конфигурацией RSA. При этом адрес сайта остается неизменным и все действия происходят незаметно для пользователя. Сайты могут отображать как одинаковое, так и различное содержимое в зависимости от конфигурации.
Схема использования nginx в качестве веб-сервера выглядит примерно так:
Для реализации одновременной работы потребуется собрать nginx с патчем GOST_SWitchPatch (здесь и далее ссылки на скачивание доступны зарегистрированным пользователям). Для пользователя работа патча будет заключаться в прозрачном переключении на сайт RSA при отсутствии ГОСТ сюит в сообщении ClientHello.
Настройка прокси
При использовании nginx в качестве прокси-сервера можно получить ряд преимуществ в техническом и экономическом плане: для обеспечения поддержки TLS на всех серверах и службах бэкенда достаточно одного сервера c nginx и одной лицензии для криптопровайдера на сервере.
За таким прокси-сервером может находиться служба, которая в обычной реализации требует HTTPS-соединения по разным алгоритмам и с помощью самых разнообразных приложений (например, nginx, IIS, Apache), по функционалу это может быть веб-сервер, сервер удостоверяющего центра, почтовый сервер и др.
Использование серверных сертификатов требует наличия серверной лицензии для криптопровайдера КриптоПро CSP, а также клиентских лицензий в случае использования двухсторонней TLS-аутентификации и совершения других криптографических операций посредством OpenSSL. Криптографический модуль, а также патч, позволяющий настроить прозрачную работу по единому порту для слушателей, использующих разные алгоритмы, можно скачать с нашего форума. В этой же теме можно взять патч mod_ssl_gost_capi для Apache. На форуме также есть детализированное описание настройки конфигурации nginx и описание настройки Apache. В этих темах специалисты готовы ответить на технические вопросы и услышать отзывы.
Серебренникова Елена
Пичулин Дмитрий
Смышляева Екатерина