问题标签 [handshake]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
13358 浏览

curl - 针对 OpenSSL 1.0.0 服务器使用 OpenSSL 0.9.8 运行 curl 会导致握手错误?

如果我对运行 OpenSSL 1.0.0e 的机器运行 curl 例如:

在运行 OpenSSL 0.9.8r 的机器上出现以下错误:

如果我在运行 OpenSSL 1.0.0e 的机器上运行相同的 curl 命令,该命令将毫无问题地完成。

握手似乎没有正确完成,显然是由于两个 OpenSSL 版本之间的一些不兼容。

知道如何解决这个问题吗?

0 投票
1 回答
1294 浏览

tcp - TCP 握手:服务器发送的事件和 WebSocket?

我只是对网络技术不是很熟悉。

我想知道 SSE 和 WebSocket 什么时候都通过 HTTP 进行通信,在 HTTP 连接之前是否还有著名的 TCP 3 次握手?

如果是,WebSocket 将有两次 3 次握手?一个通过 TCP,第二个用于通过 HTTP 的升级方法?

提前致谢!

0 投票
3 回答
377 浏览

java - java游戏客户端/mysql db的认证机制

我需要弄清楚如何最好地验证从 C++ 游戏客户端连接到另一台服务器上的 mySQL 数据库的用户,并且我计划编写一个 Java Web 服务来完成此任务。

安全是首要考虑的问题,我需要确保通过网络传输的数据是加密的,所以我将利用 SSL(最初我考虑使用 ws-security 进行消息级加密,但我认为它的开销太大)。

我真正需要弄清楚的是我应该提供什么样的身份验证机制。这些用户将提供用户名和密码,并将向服务发出 Web 请求。

我还没有决定该服务应该是传统的 SOAP Web 服务还是 RESTful 服务。REST 背后的整个想法是使服务器无状态,并且由于客户端基本上将与服务建立会话,因此我认为在这里使用 REST 没有意义。

说了这么多,我真正需要确定的是如何准确地执行握手以及如何保持会话。

是否有任何流行的框架提供 API 来针对 mySQL 数据库执行此操作?

再次,客户端将向服务器提供 UN / PW,服务器需要解密它们(SSL 应该负责),根据存储在 mysql DB 中的帐户信息对它们进行身份验证,然后返回某种哈希或类似的东西这样用户的会话就可以持续下去,或者用户不必再登录来发出额外的请求。

谁能推荐一个框架/一些阅读材料让我浏览一下?

0 投票
1 回答
2245 浏览

c++ - websocket 握手

我正在使用 c++ 编写一个 websocket 服务器,我正在等待握手,使用 chrome 17 作为客户端。

当服务器向客户端发送握手响应时,chrome总是在控制台中显示以下错误:

WebSocket 握手期间出错:Sec-WebSocket-Accept 不匹配

chrome中的事件如下:

请帮忙。

0 投票
3 回答
83173 浏览

java - 为什么我会遇到握手失败(Java SSL)

我正在通过 HTTPS 连接到 Web 服务。我已经完成了我认为使它工作所需的一切,但最后我握手失败。

我发现作为一个新用户,由于“垃圾邮件保护”,我不能发布超过 2 个链接 - 非常感谢 stackoverflow ......无论如何,这是一个 pastebin 帖子的链接,其中包含所有链接......所以当我在这里写“link#1”,这是对这些链接的引用:http: //pastebin.com/y4zGNRC7

  • 我使用 HttpClient(服务 URL 上的 GET)验证了相同的行为,并通过 CXF 代理实际调用了 Web 服务
  • 我正在设置密钥库和信任库 - 我尝试了“代码中”方式(link#1)和设置系统属性 - 即 System.setProperty("javax.net.ssl.keyStore", "mykeystore.jks" );
  • SSL 调试已开启 ( javax.net.debug=all )
  • SSL 调试会脱口而出 keystore 和 truststore 的内容(即看起来像 java“知道它们”)-link#2
  • 似乎有一些客户端-服务器通信正在进行,但由于某种原因它崩溃了链接#3
  • 我在浏览器(Chrome)和使用 openssl s_client 中使用客户端和 CA 证书成功连接到服务器
  • wireshark 显示来自 java (link#4) 的客户端-服务器对话较少,例如来自 Chrome (link#5)

另一个奇怪的事情是,当我设置密钥库和不设置密钥库时,我似乎得到了相同的行为(唯一的区别是当我执行密钥库时,内容会打印在控制台中,仅此而已)。

我试着用谷歌搜索这个问题,我在 stackoverflow 上看到了很多类似的帖子,但没有任何帮助。我尝试更改协议版本(“TLSv1”、“SSLv3”,甚至是奇怪的 v2 Hello)。任何帮助将不胜感激 - 也许我可能忽略了一些基本的事情......我在这里变得绝望......谢谢

PS 我在 Fedora Core 15 (64bit) 上运行 java 1.6 update 30

0 投票
2 回答
1700 浏览

lua - 如何从 Lua 生成 websocket 握手?

在 Lua 中是否有生成服务器响应密钥的现有功能?这是python中的解决方案:websocket握手问题

我确实捕获了两个关键数字,计算了空格,捕获了第三个字符串,并希望其余的都在现有函数中......

0 投票
1 回答
1872 浏览

c++ - 3次握手过程中丢包

我需要在用 c++(使用winsock 2)编写的客户端和服务器应用程序之间执行 3way 停止并等待握手以进行分配。客户端发送一个 SYN。服务器增加客户端序列号并发送 SYN-ACK。客户端增加服务器序列号并发送 ACK。

为了模拟数据包丢失,客户端和服务器连接到一个中间路由器程序,该程序偶尔不转发数据包,导致丢失。我应该如何构建我的 sendto()、select()、recvfrom() 语句以解决可能的数据包丢失问题?

例如,如果 SYN 丢失并且客户端超时,则重新发送它。如果 SYN-ACK 丢失,客户端超时并重新发送 SYN。我不知道如果 ACK 丢失了该怎么办。

编辑:在我的客户端上基本上是这样的:

  • 发送 SYN。
  • 在 select() 语句失败时循环并重新发送 SYN
  • 接收 SYN-ACK
  • 发送确认
  • 如果 ACK 丢失,循环以可能重新接收 SYN-ACK。

我怎么知道什么时候停止循环?

0 投票
1 回答
361 浏览

html - Websockets - 强制协议

我在让 Chromium/Firefox 与我的 node.js 安装握手时遇到问题,因为它们现在都使用 hybi10 协议(该节点 WebSocket 显然还不支持)。

我认为这样做是对的吗...

...应该强制浏览器使用旧协议吗?它似乎没有解决我的问题

0 投票
3 回答
25100 浏览

java - 使用 2-way SSL Handskake(客户端和服务器证书)设置 Netty

我现在正在尝试使用 2 路 SSL 握手设置 Netty,其中客户端和服务器都存在并验证证书。

这似乎没有在 SslHandler 中实现。有人这样做吗?我想它会进入 SslHandler.handshake 操作并委托给 javax.net.ssl.SSLEngine?

任何提示/提示/预先存在的实现?

谢谢!


回答(stackoverflow 不会让我以正常方式发布它)我发现如果我在设置我的 SslHandler 之前在 SSLEngine 对象上设置了 needClientAuth 标志,那么问题就解决了!

0 投票
2 回答
8770 浏览

https - SSLv3 记录层内的 TLS 握手

我的服务器配置为接受 SSLv3 和 TLS1.0 协议。但是一些客户端正在发送以下握手参数,并且在服务器打招呼之后,客户端断开连接并发送“handshare failure(40)”警报,不确定是客户端故障还是服务器故障。

这是初始的客户端问候数据包:

记录层是 SSL 3.0,但内部握手协议是 TLS 1.0。我的问题是,这是正确的做法,即为每一层使用不同的版本吗?如果是什么方法呢?我在任何地方都找不到它,我查看了 RFC,但找不到任何参考。另外,我怎样才能产生这样的请求?

编辑:我对故障排除和解决问题不感兴趣,我只想知道如何发送这样的数据包?有什么命令吗?我应该给这个方法起什么名字?即我可以使用 curl 或 openssl 来使用 ssl3 或 tls1 但这会在记录层和握手层发送相同的版本:

上面的 curl 命令将在 wireshark 上查看:

线鲨

EDIT2:这甚至合法吗?我一直在谷歌搜索,找不到任何例子。它是否违反任何 rfc 标准?

谢谢