【问题标题】:Can I make my own secure HTTP connection to a specific server我可以自己建立与特定服务器的安全 HTTP 连接吗
【发布时间】:2011-09-13 15:07:04
【问题描述】:

我正在考虑通过 HTTP 在特定客户端和特定服务器之间编写安全连接。当然 SSL 是最好和最明显的选择。但我一直认为我可以自己做密码学。

请注意,这不是将任何客户端连接到特定服务器,而是将特定客户端(例如我的 PC 上的 Java 客户端应用程序)连接到特定服务器(我的网站托管在其他地方)。所以第三方认证似乎没有必要,因为服务器确切地知道要寻找哪个客户端,而客户端确切地知道要找到哪个服务器。

如果我想将文件从客户端上传到服务器。我可以手动加密它(AES 或其他),并将密钥硬编码到客户端应用程序中,并将其放入服务器上的文件中,不让公众看到。

请告诉我我是疯了还是傻了,还是在推风车。我的想法可行吗?

【问题讨论】:

  • 使用 SSL,这是最简单的方法,而且足够安全。如果您想更进一步,您可以使用 X509 4096bit 证书。这将只识别您,并且非常安全(大多数技术支持 X509 证书)
  • 是的。我意识到 SSH 和 SSL(甚至是自我认证)都更好,但它更多的是一种思想实验。
  • AES => 对称的。如果只有一个客户端,并且您有一种安全的方式将密钥从生成密钥的机器发送到对方,那么就可以了。否则,公钥加密是可行的方法。

标签: security http encryption ssl


【解决方案1】:

简短的回答是,“不,你不能。”您可以编写一些您认为实现安全连接的代码,但实际上它是不安全的。设计和实现安全连接是一项非常熟练的工作;看看安全顾问会为此向您收取多少费用。

既然你在这里问这个问题,那么假设你不是这样的人是合理的。由于您没有所需的技能和经验,因此您制作的任何东西都是不安全的。

使用已为您避免所有明显错误以及许多不那么明显错误的现有标准。

【讨论】:

    【解决方案2】:

    您的想法是可能的,实际上,如果您只需要将文件发送到特定的 URL,那么使用加密数据发出 POST 请求会更容易(如果 URL/标头不需要对您来说是安全的)。

    【讨论】:

    • 你如何建议我给客户端和服务器都提供密钥?
    【解决方案3】:

    Trying to roll your own replacement for SSL is a bad idea.不要推出自己的加密货币。相反,您应该使用 SSL。它可以满足您的需求。

    鉴于您需要对客户端和服务器进行身份验证,您应该将 SSL 与客户端证书(以及标准的服务器证书)一起使用。

    【讨论】:

      猜你喜欢
      • 2015-07-24
      • 2012-07-21
      • 1970-01-01
      • 2016-06-30
      • 2017-03-04
      • 2013-01-15
      • 2023-03-13
      • 1970-01-01
      • 2021-10-20
      相关资源
      最近更新 更多