Можно ли как-то использовать openssl s_server
как своего рода обратный прокси, пересылающий все данные после рукопожатия на другой порт.
Чтобы быть более конкретным, я хотел бы создать простой tftp-over-dtls настройка для тестирования.
Да, используя достаточно свежие OpenSSL и Bash, вы можете перенаправить ввод и вывод команды «s_server» в сокет. На (прокси) сервере вы можете запустить:
exec 3<> /dev/udp/mytftpserver.com/69; openssl s_server -dtls -port 1069 \
-key x.key -cert x.cert -quiet <&3 >&3
На стороне клиента начните связываться с прокси-сервером, порт 1069, с вашим TFTP-клиентом с поддержкой DTLS:
openssl s_client -dtls -connect myproxyserver.com:1069
Однако для TFTP фактическая передача файлов будет происходить из порта, отличного от 69, для этого тогда установленная ассоциация DTLS, скорее всего, не будет использоваться.
Нет это не так.
Поскольку openssl s_server выполняет только TCP, как указано в выводе man s_server
:
DESCRIPTION
The s_server command implements a generic SSL/TLS server which listens for connections on a given port using SSL/TLS.
OPTIONS
-accept port
the TCP port to listen on for connections. If not specified 4433 is used.
TFTP использует UDP (см. https://en.wikipedia.org/wiki/Trivial_File_Transfer_Protocol, http://www.faqs.org/rfcs/rfc1350.html), поэтому я не могу понять, как вы это сделаете.
Однако nginx может делать то, что вы ищете.
Согласно / etc / services, для TFTPS существует назначение IANA, но я не могу найти RFC или другой документации по этому поводу.
редактировать
Как указано в комментариях, s_server (в некоторых выпусках openSSL, например, 1.1.0) поддерживает DTLS: https://www.openssl.org/docs/man1.1.0/apps/s_server.html.
Однако это не относится ко всем выпускам openSSL - 1.0.2 (https://www.openssl.org/docs/man1.0.2/apps/s_server.html) и 1.0.1 (https://www.openssl.org/docs/man1.0.1/apps/s_server.html) не поддерживают DTLS.