这可能是一个非编程问题。
说明:
1)我使用的是Linux。
2)我有两个C++程序,“客户机”和“服务器”;它们运行在不同的机器上,它们目前通过tcpip进行对话。我有两个程序的源代码。
3)这两个程序都不会在流检查/防御中间人攻击/ mac /加密上进行缓冲。
4)我不想给我的程序增加这种额外的复杂性。
5)我想让这两个程序只通过ssh通道进行对话(但是客户机和服务器都运行在多用户的机器上;所以如果我只打开端口,其他用户也可以访问它们)。
问题:
让客户端和服务器通过安全通道相互通信的最不具侵入性的方法是什么?
谢谢!
发布于 2010-01-17 07:31:08
就编程解决方案而言,您需要OpenSSL或GNU TLS。在这两种语言中,后者的代码要简洁得多(OpenSSL有很多缺陷)。
对于一个真正优雅的解决方案,你可以使用OpenSSL via boost::asio,但这个解决方案可能只有在你开始一个新项目时才合适。
就用户空间解决方案而言,如果您可以将这两个程序都设置为以指定用户的身份运行,则可能会为它们设置一个SSL隧道,但这在很大程度上取决于您希望如何建立连接。
发布于 2010-01-17 07:31:45
您可以在隧道代理模式下使用ssh。您从一台计算机连接到另一台计算机并设置代理端口,然后客户机连接到其计算机上的本地端口,ssh代理TCP连接到远程计算机。
ssh命令所需的选项是-L。
一条评论指出,至少在理论上,这存在客户端机器上的某些程序爬上端口的风险。
然而,SSL需要很多的机制。如果我不得不这样做,而且我真的不想使用-L,我会深入研究-L的源代码,并想出一个方案来做ssh所做的事情。
发布于 2010-01-17 10:12:06
您基本上有两个选项,它们都不是SSH。首先,使用SSL/TLS,要针对本地用户提供安全性,需要将其构建到您的程序中。第二,在每一端的防火墙中使用IPSEC或OpenVPN和一些本地用户规则,将隧道的使用限制为仅运行队列中的任务的用户。
https://stackoverflow.com/questions/2079366
复制相似问题