Ghostunnelは、TLSを自前で処理できないプログラムに代わってTLSを担うオープンソースのプロキシです。

Ghostunnelは2つの方向で動作します。サーバモードではバックエンドの前段に置かれ、TLS接続を受け付けてクライアント証明書を検証し、TCPまたはUNIXソケット経由で背後のサービスにトラフィックを渡します。クライアントモードはその逆で、ローカルの平文接続を待ち受け、TLSで包んだうえでクライアント証明書を提示し、リモートのサービスに接続します。両端に1つずつ配置すれば、アプリケーションは平文のままやり取りしつつ、双方が互いの身元を証明できます。
社内サービスが平文で通信しているとします。ある日、その通信に相互TLSが必要だと判断されても、実装するコードが存在しなかったり、ベンダーの管理下にあったりすることがあります。Ghostunnelは、この役割をアプリケーションから切り離し、独立したプロセスとして引き受けます。
接続を許可する相手の指定
サーバモードでは、通過を許可する相手を指定しない限りプロキシは起動しません。チェック項目は、コモンネーム、組織単位(OU)、証明書内のDNS名またはURI名、公開鍵ピン、ポリシーのうち、少なくとも1つを選びます。複数を組み合わせることもでき、その場合はOR条件で評価されます。GhostunnelはSPIFFE IDにも対応しています。より複雑な条件には、Open Policy Agentのポリシーを評価でき、トンネルの稼働中に再読み込みもできます。
証明書の入手元
鍵と証明書は、PEMまたはPKCS#12ファイル、macOSのキーチェーン、Windowsの証明書ストア、SPIFFE Workload API、YubiKeyを含むPKCS#11ハードウェアモジュールから取得できます。サーバモードでは、ACME経由でLet’s Encryptから取得することも可能です。証明書はSIGHUPまたはタイマーで再読み込みされます。これにより、有効期間の短い認証情報も無理なく運用できます。証明書が更新されるとプロキシが新しいものを読み込み、再起動は不要です。
知っておきたいデフォルト設定が2つあります。1つ目として、Ghostunnelは--unsafe-listenを指定しない限り、localhostまたはUNIXソケット以外では待ち受けません。接続先についても同様で、--unsafe-targetを指定する必要があります。2つ目として、Linuxでは無効化しない限り、Landlockによる自己サンドボックス化が行われます。ステータスポートではJSON形式とPrometheus形式のメトリクスを公開するため、既存の監視基盤からトンネルの状態を確認できます。
配布形態は、ランタイム依存のない単一の静的Goバイナリです。Linux、macOS、Windows、BSD向けにビルドでき、ライセンスはApache 2.0です。systemdとlaunchdのソケットアクティベーションに対応しているほか、元の接続情報を必要とするバックエンド向けにPROXY protocol v2も利用できます。
GhostunnelはGitHubから無料で入手できます。
翻訳元: https://www.helpnetsecurity.com/2026/11/04/ghostunnel-open-source-tls-proxy/