Stunnel представляет собой криптографический SSL/TLS-прокси-механизм, который принимает незащищенное TCP-соединение «на вход», устанавливает защищенное SSL/TLS-соединение с удаленным сервером и передает по нему, полученные «на вход», данные. Адрес и порт удаленного сервера прописываются в конфигурационном файле stunnel.
В рамках протокола SSL/TLS возможно выполнение клиентской аутентификации по цифровому сертификату. Закрытый ключ, соответствующий сертификату, может храниться на USB-токене или смарт-карте. Для использования продуктов Рутокен в приложении stunnel предназначена библиотека pkcs#11: например, opensc-pkcs11 из проекта OpenSC или engine_pkcs11. При этом конфигурационный файл stunnel должен быть модифицирован следующим образом:
engine=dynamic
engineCtrl=SO_PATH:/usr/lib/opensc/engine_pkcs11.so
engineCtrl=ID:pkcs11
engineCtrl=LIST_ADD:1
engineCtrl=LOAD
engineCtrl=MODULE_PATH:/usr/lib/pkcs11/opensc-pkcs11.so
engineCtrl=INIT
[service] engineNum=1
key=id_45
Подробнее о том, как с помощью stunnel защитить RDP-соединения по протоколу TLS, в статье Защита RDP по ГОСТ с помощью Рутокен ЭЦП. Двухуровневый TLS.