gpt4 book ai didi

ssl - 服务器标识 - SSL 或 "Manual"

转载 作者:太空宇宙 更新时间:2023-11-03 15:09:15 27 4
gpt4 key购买 nike

在我的应用程序中,我想检查我连接的服务器是否可信。我没有使用需要证书费用的 SSL,而是考虑创建自己的身份检查,在连接时我会向服务器发送一个随机字符串。服务器将使用硬编码的私钥对字符串进行 rsa 加密并将结果发回。然后,客户端应用程序将使用硬编码的公钥解密结果(它只有公钥,没有私钥)。如果它发送的字符串和它解密的字符串匹配,则服务器的身份将被证明并且 tcp 通信将仅使用 AES 加密(AES key 在服务器身份被证明后以 rsa 加密格式传输)。

问题:

  1. 这种方法是否可行?如果可行,弱点在哪里?(显然,除了我必须对私钥保密外)
  2. 在这种情况下使用 SSL 和购买的证书有什么好处?
  3. 在这种情况下,自签名 SSL 证书是否也足够了?我计划公开提供该服务。

最佳答案

I want to check whether or not the server I am connecting to is trustable.

您的方法和使用 SSL 的方法都不能提供有关服务器可信度的任何信息,而只能提供一种识别服务器的方法,即确保您正在与预期的服务器对话。服务器仍然可能被黑客攻击并提供恶意软件,因此您不应该仅基于标识就信任它。

I thought about creating my own identity check, where I would send a random string to the server at connection ... rsa encrypt ... hard-coded private key ... hard coded public key ...

您实际上是在尝试通过证书固定重新发明 TLS。需要从公共(public) CA 购买证书不是 TLS 的要求。只要客户端事先知道预期的证书或公钥,即在连接之前,您就可以简单地创建自签名证书。使用由公共(public) CA 签名而不是自签名的证书的要点是,它不会扩展到将世界上的每个证书都安装到客户端浏览器/操作系统中,但它可以扩展到有几个信任 anchor (根 CA)安装。

有关如何将 TLS 与证书/公钥固定在一起的更多信息 page at OWASP其中甚至包括各种语言的代码示例。

关于ssl - 服务器标识 - SSL 或 "Manual",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31632078/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com