服务器使用openssl / certificate / private密钥接受可信客户端

时间:2013-11-18 20:55:14

标签: c linux openssl certificate

我正在编写一个客户端/服务器程序来控制客户端程序中的计算机(服务器),并希望对客户端计算机进行身份验证以了解它是否可信。我可以有很多客户端,所以我想到使用openSSL加密套接字并生成一个唯一的证书/密钥对进行身份验证。在使用scp的设置时间内将该对复制到每个服务器/客户端。 建立SSL连接时,服务器程序将询问客户端的证书并根据密钥(实际上是私钥)对其进行验证。因此,如果它们都匹配连接继续,如果不匹配则丢弃。

需要考虑的一些事项:

  1. 我无法使用CA来验证证书,它将是自我的 签名,因为机器甚至不能上网和 如果可能的话,不要让安装过于复杂。
  2. 证书/密钥只能由有效用户读取 Linux机器(客户端和服务器)和磁盘将被加密。
  3. 到目前为止似乎工作,但我有一些问题,因为我只是从这个开放的东西开始。

    我的问题是:

    1. 将证书/私钥复制到所有节点是不好的做法吗?
    2. 有人可能会在身份验证中看到一些失败点 过程或证书存储可能削弱这个想法?
    3. 我看过像Peer to Peer linux authentication in C这样的帖子,但没有帮助。

      我现在在服务器中执行此操作的方式如下:

      1. SSL_CTX_use_certificate(ctx,client_cert)< -certificate由 客户端
      2. SSL_CTX_use_PrivateKey_file(ctx,keyfile,SSL_FILETYPE_PEM)< -key 存储在服务器中
      3. SSL_CTX_check_private_key(ctx)< -check both
      4. 因此,如果SSL_CTX_check_private_key(ctx)返回0是因为私钥和证书不匹配且客户端未被授权,所以我放弃了连接。

        我非常感谢您对此的看法。 如果需要更多代码,请将其粘贴到此处,但我认为可以遵循这个想法。

0 个答案:

没有答案