我想编写一个应用程序来来管理上的数百台远程PC 上的文件,目录和进程。这些机器上运行着一些测量程序,当前可以使用TightVNC/RealVNC对其进行手动管理。由于机器的数量很大(并且还在不断增加),因此需要自动管理。计划是,我们的运算符(operator)将获得一个可编写脚本的客户端应用程序,他们可以从中向运行在每台远程PC上的服务器应用程序发送查询和命令。

对于通信,我想使用基于TCP的自定义协议(protocol),但是它在管理上很复杂,并且需要很长时间才能打开每个防火墙中的针孔。幸运的是,有一个程序在每个远程PC 上运行带有基于TinyWeb的内置自定义Web服务器的内置Web服务器,并且在每个防火墙中都打开了端口80。这些Web服务器通过启动CGI程序来满足来自中央服务器的请求,该程序将加载并发送回测量程序的日志文件的一部分。

因此,计划是编写一个 CGI程序,并通过 HTTP (使用GET和POST)与客户端进行通信。尽管(大多数)远程PC都位于公司内部网中,但它们分散在全国各地,我想确保通信的安全。以纯文本形式发送用于操纵文件和进程的命令是不明智的。 不幸的是,无法触摸包含Web服务器的程序,因此我不能简单地为HTTPS做准备。我只能在客户端和CGI程序中实现安全层。我应该怎么办?

我已经阅读了SO中所有类似的问题,但是我仍然不确定在这种特定情况下该怎么做。感谢您的帮助。

最佳答案

有几个Web shell 程序,但据我所知(http://www-personal.umich.edu/~mressl/webshell/features.html),它们在现有SSL/TLS层的顶部运行。

还有S-HTTP

没有SSL,有几种以 protected 方式对服务器进行身份验证的方法(用户名/密码)。 http://www.switchonthecode.com/tutorials/secure-authentication-without-ssl-using-javascript。但是这些解决方案仅专注于向服务器发送用户名/密码。

10-01 03:35
查看更多