Ghostunnel是用于保护非TLS后端的应用程序相互认证支持简单的SSL / TLS代理。Ghostunnel运行在一个后端服务的前部和接受TLS安全连接,然后将其代理到(不安全)的后端。后端可以是TCP域/端口或UNIX套接字路径。换句话说,ghostunnel为在服务器模式Stunnel的一个非常有限的更换。
认证/访问控制:Ghostunnel通过始终需要一个有效的客户端证书强制相互验证。我们也支持通过一个客户端证书主题的CN / OU领域的检查,访问控制。这是用于限制到不具有本地访问控制服务的访问是有用的。
证书热交换进行:Ghostunnel可以重新加载在运行时的证书而无需放弃现有的连接。要触发重载,只需发送 SIGUSR1
的过程。这将导致ghostunnel重新加载密钥库文件,并打开一个新的监听套接字(通过SO_REUSEPORT
)。一旦成功,老监听套接字将被关闭。
自动重新加载:Ghostunnel可以被配置为自动重新加载证书。您可以指定与间隔--timed重装
标志。如果启用了定时加载标志,ghostunnel将定期重新加载文件,并检查是否有变化。如果检测到变化,它将尝试使用新的证书/私钥重新加载监听器。
上手玩的实施,则需要生成一些测试证书。如果要引导一个完整的PKI,上手的好方法之一就是使用包像 广场/ certstrap。如果你只需要与隧道玩弄一些测试证书,你可以找到一些预先生成的那些测试键
目录(一起就如何生成OpenSSL的新的指令)。
要构建ghostunnel并运行测试:
make build
make test
要更新vendored依赖关系:
make update-depends
这是如何启动ghostunnel监听传入连接一个简单的例子本地主机:8443
和转发他们到本地主机:8080
。我们假设server.p12
是PKCS12密钥存储的证书和私钥的服务器,以及root.crt中
包含您的受信任的根证书(S)。
要设置允许客户端,您必须指定的至少一个--allow-ALL
, --allow-CN
或--allow鸥
。它可以同时使用--allow-CN
和 --allow鸥
一起或重复指定他们允许多个CN / OU值。在这个例子中,我们假设客户端的CN证书,我们要接受的连接是由客户端
。
先从服务器证书ghostunnel:
ghostunnel \
--listen 127.0.0.1:8443 \
--target 127.0.0.1:8080 \
--keystore test-keys/server.p12 \
--cacert test-keys/root.crt \
--allow-cn client
验证客户端(S)可以与他们的客户端连接证书:
openssl s_client \
-connect 127.0.0.1:8443 \
-cert test-keys/client.crt \
-key test-keys/client.key \
-CAfile test-keys/root.crt
如果OpenSSL的的s_client.First
可以连接,那么隧道应发挥预期!一定要检查的日志,看看传入连接等信息。请注意,在默认情况下ghostunnel日志来stderr和在前台运行(设置--syslog
记录到系统日志)。对于deamonization,我们建议使用一个实用工具,如以进程。有关如何在泊坞窗容器使用ghostunnel一个例子,看到了码头工人
的子目录。
https://github.com/square/ghostunnel/archive/master.zip
热门源码