Если вам нужно обеспечить доступ к сервису в локальной сети по http извне, но защитить трафик каким-либо шифрованием, то более чем достаточно обычного перенаправления портов ssh, на роутере или на машине в локальной сети запускаем ssh сервер с разрешенным перенаправлением портов (по умолчанию это разрешено AllowTcpForwarding Yes), а затем в сети,
откуда необходим доступ, нужно запустить:
ssh user@host -L ip_адрес_локальной_машины:port_локальной_машины:ip_адрес_машины_с_http_сервисом:port_этого_сервиса
кстати можно и наоборот, особенно это актуально, если подключения из вне до целевого сервиса никак не доступны, можно ssh сервер поднять на клиенте (откуда хотим подключаться) а она из машин в локальной сети где целевой сервис стоит, должна запустить ssh клиент:
ssh user@host -R ip_адрес_в_локальной_сети_целевого_сервиса:port_целевого_сервиса:ip_адрес_в_локальной_сети_клиента:port_в_локальной_сети_клиента
в обоих случаях сервис станет доступен из локальной сети клиента по адресу:
http://ip_адрес_в_локальной_сети_клиента:port_в_ло...
Точнее по тому же протоколу, по которому он работает в этой локальной сети.
ip_адрес_в_локальной_сети можно не указывать, если он 127.0.0.1, так же порт по которому ssh будет слушать подключение, если будет ниже 4000 то ssh должен быть запущен под root
upd. если нужно именно https протокол, то нужно запускать http сервер с поддержкой ssl сертификатов (обычно в роутерах этого нет) в режиме проксирования (например nginx)