web-services - 在没有加密的情况下通过网络向用户发送 SSL-pubkey 是否安全?

标签 web-services ssl https websocket

只需考虑以下问题:

1) 首先,客户端用户连接到基于“ws://”协议(protocol)而不是“wss://”协议(protocol)的远程 WebSocket 服务器。

2) 一旦建立了他们的 websocket 连接,远程 WebSocket 服务器就会使用此 (ws://..) websocket channel 向该用户发送 SSL-pubkey。

3) 然后,客户端将通过“ws.onmessage”事件传递 SSL-pubkey。

4) 从他们开始,客户端将开始使用此公钥向远程 websocket 服务器发送加密消息,服务器将使用其私钥解密这些消息。

我认为第 3 步和第 4 步当然是安全的,但不确定第 2 步是否安全。

那么(第 2 步)是否有可能被某人入侵?

最佳答案

TL;TR:问题的焦点错误。使用已建立的加密货币,而不是尝试发明自己的加密货币并失败。

is it safe to send SSL-pubkey to users via network without encrypted?

公钥本身就是公开信息,即没有需要特别保护的信息。它作为 TLS 握手中证书的一部分以明文形式发送 (https://, wss://)。

但是你试图用公钥做什么是一个非常糟糕的主意。

在您的设置中,客户端信任它获得的任何类型的公钥,因为没有方法可以验证 key 属于谁。中间人攻击者可以简单地用他自己的 key 替换这个公钥,这样客户端就会信任攻击者

我建议放弃您的想法并使用适当的 wss://和客户端可以信任的证书(即由受信任的 CA 签名)。这不会造成比您的想法更多的开销,但更安全,并且不会被简单的中间人攻击破坏。

关于web-services - 在没有加密的情况下通过网络向用户发送 SSL-pubkey 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37765748/

相关文章:

c# - 使用 jQuery 的 ajax 将文件发送到 C# 中的 Web 服务 (asmx)

security - 在 TSL/SSL 握手中,如何使用 ClientHello 中发送的 Cipher Suite 信息?

ssl - 如何将 gzip 与 SSL 或任何替代方案结合使用?

tomcat - 我可以在 Tomcat catalina.properties 中设置 https.protocols 吗?

git - 如何在限制 ssh 的防火墙后面通过 https 访问 heroku git

wcf - 无法使用 https 调用 Azure 中托管的 WCF 服务的方法

java - 什么是 HTTP 请求的 904 事务结束响应

php - 如何强制在类别上使用我的 ID,而不是 prestashop 类别的自动增量。普斯塔商店

java - 将 For 循环与 Weather Java Web 服务结合使用

web-services - 如何在 Liferay WebService 中获取 HttpServletRequest