Криптографический модуль gost_capi. Использование КриптоПро CSP в работе TLS на nginx и Apache для OpenSSL

Последнее время к нам все чаще обращаются с вопросами внедрения поддержки на 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. В этих темах специалисты готовы ответить на технические вопросы и услышать отзывы.

Серебренникова Елена

Пичулин Дмитрий

Смышляева Екатерина

Follow us