我正在开发一个宠物项目,最终将允许进行安全文件传输(除此之外还有更多内容,但不是特别相关)。我想使用OpenSSL库,因为它似乎是最完整的免费加密库(我需要基本对称加密和哈希的支持,以及SSL/TLS)。
我希望实现类似于SSH的安全方案。基本上,用户将使用TLSv1(SSLv3.1)连接到我的计算机。我希望无论安全性如何,连接都能成功。然后,我想能够检查用户使用的公钥(不是整个证书)。该密钥将与已知的公钥进行比较,如果匹配,则允许用户访问某些命令。如果不匹配,用户将有选择使用连接来申请将其公钥添加到我的集合中,但除此之外将无法访问我的服务。
我在这里没有任何特殊需求证书。如果我可以跳过所有证书细节并仅使用原始加密密钥,那么这将更加简单。这是因为此模型遵循信任网络模型,而不是大多数SSL/TLS连接使用的分层模型,因此我不需要任何CA或签名证书。
不幸的是,大多数OpenSSL文档都不存在。我找到的所有相关文章似乎都在设置“标准”SSL/TLS连接,其中服务器的证书一直验证到一组根证书。这可能很有用,但我很难弄清楚如何启动这些非传统的SSL连接。
有人能建议任何文章或文档,帮助我找出如何完成这个任务吗?
(使用OpenSSL并不是必须的,如果它提供更好的方法来实现此目标以及哈希[SHA-512]和对称加密[AES],我可以切换到另一个库。我旨在针对Linux,但如果最终产品可移植到Windows,那将是很好的,这样我的朋友也可以使用它。)
我希望实现类似于SSH的安全方案。基本上,用户将使用TLSv1(SSLv3.1)连接到我的计算机。我希望无论安全性如何,连接都能成功。然后,我想能够检查用户使用的公钥(不是整个证书)。该密钥将与已知的公钥进行比较,如果匹配,则允许用户访问某些命令。如果不匹配,用户将有选择使用连接来申请将其公钥添加到我的集合中,但除此之外将无法访问我的服务。
我在这里没有任何特殊需求证书。如果我可以跳过所有证书细节并仅使用原始加密密钥,那么这将更加简单。这是因为此模型遵循信任网络模型,而不是大多数SSL/TLS连接使用的分层模型,因此我不需要任何CA或签名证书。
不幸的是,大多数OpenSSL文档都不存在。我找到的所有相关文章似乎都在设置“标准”SSL/TLS连接,其中服务器的证书一直验证到一组根证书。这可能很有用,但我很难弄清楚如何启动这些非传统的SSL连接。
有人能建议任何文章或文档,帮助我找出如何完成这个任务吗?
(使用OpenSSL并不是必须的,如果它提供更好的方法来实现此目标以及哈希[SHA-512]和对称加密[AES],我可以切换到另一个库。我旨在针对Linux,但如果最终产品可移植到Windows,那将是很好的,这样我的朋友也可以使用它。)
CertificateVerify
TLS 消息与此无关。它是客户端使用私钥对所有握手消息(包括客户端证书)的串联进行签名。它必须使用客户端证书公钥进行验证,就这样。服务器是否希望信任此证书的内容是正交的(通常通过 PKI 完成)。 - Bruno