Ghostunnel е прокси с отворен код, което поема TLS за програми, които не могат да се справят с него сами.

Работи в две посоки. В сървърен режим стои пред backend услуга, приема TLS връзки, проверява сертификата на клиента и след това предава трафика към услугата зад него през TCP или UNIX сокет. В клиентски режим прави обратното: слуша за обикновени локални връзки, обвива ги в TLS и представя клиентски сертификат на отдалечената услуга. Ако сложите по един екземпляр във всеки край, двете страни доказват коя е всяка от тях, а приложенията продължават да общуват в чист текст.
Вътрешна услуга комуникира в чист текст, някой решава, че връзката вече изисква взаимен TLS, а кодът за това или не съществува, или принадлежи на доставчик. Ghostunnel сваля тази задача от приложението и ѝ отделя собствен процес.
Кой получава достъп
В сървърен режим проксито не стартира, докато не зададете кой има право на достъп. Избирате поне една проверка: общо име (common name), организационна единица, DNS или URI име в сертификата, пин на публичен ключ или политика. Могат да се комбинират няколко проверки, които се свързват с логическо ИЛИ. Ghostunnel разбира SPIFFE ID, а за по-сложни случаи изпълнява политика на Open Policy Agent, която може да се презарежда, докато тунелът работи.
Откъде идват сертификатите
Ключовете и сертификатите могат да идват от PEM или PKCS#12 файлове, macOS Keychain, Windows Certificate Store, SPIFFE Workload API, хардуерен PKCS#11 модул (включително YubiKey) или от Let’s Encrypt през ACME в сървърен режим. Сертификатите се презареждат при SIGHUP или по таймер, което прави краткоживеещите идентификационни данни практични: сертификатът се подменя, проксито зарежда новия и нищо не се рестартира.
Струва си да знаете две настройки по подразбиране. Ghostunnel отказва да слуша на нещо различно от localhost или UNIX сокет, освен ако не подадете --unsafe-listen, като същото правило важи за целите и --unsafe-target. На Linux проксито се поставя в изолирана среда с Landlock, освен ако не изключите това. Статус порт предоставя JSON и метрики за Prometheus, така че тунелът се вижда за съществуващата система за мониторинг.
Получавате един статичен Go изпълним файл без зависимости по време на изпълнение, компилации за Linux, macOS, Windows и BSD системите и лиценз Apache 2.0. Поддържат се systemd и launchd socket activation, както и PROXY протокол v2 за backend услуги, които искат да знаят за оригиналната връзка.
Ghostunnel е достъпен безплатно в GitHub.