ВведениеПротокол TLS решает следующие задачи:
Опциональной составляющей протокола TLS является строгая аутентификация клиента. Для этой цели всем клиентам WEB-сервиса выдается ключ и сертификат TLS-аутентификации. Если рассматривать процедуру аутентификации клиента упрощенно, то сервер и клиент вырабатывают ключ согласования на основе открытого ключа сервера и закрытого ключа клиента, и затем на основе шифрования рендома с приложением сертификата клиента сервер аутентифицирует клиента и авторизует его на WEB-ресурсе. В протоколе TLS для аутентификации, обеспечения целостности и шифрования данных могут использоваться комбинации различных криптографических алгоритмов - шифрсьютов в терминологии протокола. Для российских криптоалгоритмов основным шифрсьютом является GOST2001-GOST89-GOST89, при этом выработка ключа согласования производится по схеме VKO GOST 34.10-2001. Браузеры по умолчанию не поддерживают российскую криптографию в протоколе TLS. При этом существенным препятствием к кроссбраузерности TLS-ГОСТ является то, что различные браузеры используют различные реализации протокола: Internet Explorer базируется на Microsoft Crypto API и schannel; Mozilla Firefox на NSS; Google Chrome на NSS, а под некоторыми платформами на OpenSSL. В такой ситуации удобно использовать приложение sTunnel. Приложение sTunnel в режиме клиента работает по принципу прокси – принимает на “вход” незащищенное соединение от браузера, устанавливает защищенное по протоколу TLS соединение с удаленным WEB-сервером, транслирует данные на удаленный сервер от клиента и обратно по этому защищенному соединению. STunnel использует в качестве криптоядра OpenSSL, что c одной стороны обеспечивает поддержку шифрсьюта GOST2001-GOST89-GOST89, а с другой позволяет для хранения ключа аутентификации и сертификата использовать Рутокен ЭЦП. При этом выработка ключа согласования по схеме VKO GOST 34.10-2001 проводится аппаратно, на “борту” Рутокен ЭЦП, а закрытый ключ никогда не покидает устройство, и вредоносное ПО не может украсть его из оперативной памяти компьютера. Для подключения Рутокен ЭЦП к sTunnel используется engine PKCS11_GOST. Сборка и конфигурирование sTunnel версии 5-16Внимание! Сборку следует осуществлять с openssl версии старше 1.0.1f. Stunnel следует собирать с патчем (для версии 5-16).
Затем следует создать конфигурационный сайт sTunnel.conf:
Установка и запуск sTunnel под ОС WindowsКак таковой установки sTunnel не требуется. Нужно в одну папку скопировать сам stunnel и его конфигурационный файл:
библиотеки из состава openssl:
engine поддержки Рутокен ЭЦП:
библиотеку PKCS#11 для Рутокен ЭЦП:
А так же корневой сертификат, на основе которого будет проверяться сертификат сервера и сертификат клиента.
Для запуска sTunnel следует прописать переменную окружения OPENSSL_ENGINES = [путь к директории, в которой находятся pkcs11_gost.dll и gost.dll]. При запуске должен быть подключен Рутокен ЭЦП с нужным ключом, sTunnel запросит PIN-код токена: После ввода PIN-кода в трее должна появиться иконка туннеля: После этого браузером можно идти на http://127.0.0.1:1443 и вы попадете на удаленный сервер по защищенному соединению с аутентификацией клиента: Как получить тестовый сертификат TLS-аутентификацииДля того, чтобы попробовать sTunnel на нашей тестовой площадке требуется корневой сертификат, который следует положить в файл ca.crt, прописанный в параметре CAFile конфигурационного файла stunnel.conf. Этот корневой будет использоваться при проверке сертификата сервера.
Для получения клиентского сертификата следует выполнить инструкцию:
|