【问题标题】:boost asio client authentication提升 asio 客户端身份验证
【发布时间】:2013-07-03 08:38:38
【问题描述】:

我有一个基于客户端服务器的 C++ 应用程序,它通过网络(使用 boost asio)进行通信,我计划将此客户端应用程序分发给我的客户。我的问题是我不知道如何阻止来自其他应用程序的连接请求,这就是我如何确保只有我的客户端应用程序能够连接到我的服务器。我认为如果不建立连接就无法做到这一点,那么验证请求是否来自我的客户端的最佳方法是什么?

【问题讨论】:

  • 我遇到了同样的问题;我对此的解决方案是使用 SSH 隧道。您必须事先打开隧道,但您直接依赖现有机制来解决此问题。

标签: c++ network-programming boost-asio network-security


【解决方案1】:

您可以使用 asio 的内置 SSL 功能。因此,您为每个服务器和客户端生成证书。因此,您可以在 SSL 握手时检查服务器上的客户端证书。作为奖励,您的流量将被加密和 SSL 安全。客户端可以检查服务器是不是假的;服务器可以检查客户端是否被授权。

【讨论】:

    【解决方案2】:

    是的,您必须接受连接才能知道它是否来自您的应用程序。 您可以在连接步骤中使用三次握手:

    1. 客户端连接到服务器服务器正在发送一个特定的 新客户端的值(整数,字符串或其他)。
    2. 客户端处理这个值,用它计算一个新值并发送 服务器的新值。
    3. 服务器检查返回值是否正确。

    客户端将具有与服务器相同的计算方法。如果返回错误值,其他应用程序将无法使用您的服务。

    【讨论】:

    • 这很容易受到重放攻击。
    • 它没有。如果正确实施握手,重放攻击不是问题......
    猜你喜欢
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 2011-04-09
    相关资源
    最近更新 更多