问题标签 [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.
security - 客户端通过身份验证时的安全性和 TLS 握手
在配置了客户端身份验证的 TLS 握手中,有一个步骤是服务器接收客户端的证书并选择是否信任它(例如,在 Java 中,它是通过 TrustManager 完成的)。
我想知道来自服务器的最终“信任失败”消息是在服务器确保客户端真正拥有该公钥之前还是之后发送的(例如,通过首先从握手中接收一些用客户端的私有密钥编码的消息钥匙)。
我的问题的目的是查看第三方是否有可能通过假装是该客户端并使用他的公钥来检查服务器是否信任客户端。
注意:在具有特定安全要求的上下文中使用 TLS 时,风险是真实存在的。例如,假设一个 P2P 应用程序在对等点之间使用 TLS,并使用 TrustManager 作为从其联系人列表中对对等点进行身份验证的一种方式。此联系人列表应该是私人的。ISP 可以列出节点与之通信的 IP,然后通过与它开始 TLS 握手来获取他的公共证书,然后他可以尝试连接 IP 列表中的每个其他节点。最后,ISP 可以获得很大一部分本应是私有的联系人列表。
websocket - 我可以更改 Web 套接字请求的 Origin 值以及如何更改
我在我的计算机上启动一个服务器并加载一个本地 html 文件。当我向服务器发送 Web 套接字请求并检查客户端握手和从服务器发送的握手时,Origin 值不同。我可以操纵这个值或从某个地方设置它吗?如何设置?
curl - startssl.com 身份验证如何工作?
Startssl.com 提供免费的 1 类 ssl 证书,使用非常独特且简单的身份验证系统。在它的登录过程中,它会将客户端重定向到https://auth.startssl.com/并且浏览器会询问他们的唯一证书。该阶段完成后,他们将被重定向到他们的控制面板,无需任何用户名/密码验证。
我什至不知道 HTTP(s) 可以本机进行这种类型的身份验证!
我已经尝试使用curl
来剖析这个请求,但我无法获得一个值 HTTPS 请求来通过。
curl 是否支持这种类型的 HTTPS 连接,如果支持,它将如何在服务器端和客户端进行配置?
serial-port - 串口握手。硬件和无握手有什么区别?
我试图确定当我使用硬件握手和无握手打开串行端口时的区别。
似乎在这两种情况下我都必须控制RTS/CTS
信号(只是用一个 COM 设备对其进行了测试)。那么用硬件握手和不握手打开串口有什么区别呢?
根据我之前的理解,当我们工作时without handshaking
,我们并不关心RTS/CTS
和DTR/DSR
信号。随时发送和接收数据。我错了吗?
还有一个问题。我们可以只without handshaking
在full duplex
模式下工作吗?
android - x509 证书的 SSL 握手错误
在我的应用程序中,我必须将不受信任的服务器证书添加到我的密钥库编程中。我获得了 X509 证书,我相信我必须使用 keyStore.setCertificateEntry() 方法添加到密钥库。
但是该方法接受 java.security.cert.Certificate,当我通过 X509 证书时它会出错。但在许多地方,即使是在 android 源代码中,他们也会通过 java.security.cert.Certificate 的 X509 证书。
我做错了什么?
同时,如果您有任何正确处理服务器证书的链接,请分享。我发现的所有链接都是忽略证书。
提前致谢。
websocket - websocket 握手:开发人员需要为此做些什么?
我已经成功完成了我的 websocket 测试,但我想了解 Websocket 握手。在我的网络客户端中,我使用以下代码启动 websocket 通信
在我的 Web 服务器(使用 Java)中,我使用了 Jetty lib 并实现了如下服务器:
Web 套接字通信对我来说工作正常,我没有为握手做任何事情。它是如何工作的?
node.js - Node.js - 在运行时动态更改 HTTPS 服务器的 SSL 证书
我正在构建一个 HTTPS 代理node
。基本上,我允许人们为我的代理机器(设置了通配符 DNS)设置 DNS CNAME 别名,并将他们的 SSL 证书导入我的应用程序(就像 AWS Elastic Load Balancer 一样),以便他们的 CNAME 主机名得到适当的保护和客户对每个请求的认可。
现在我在代理端工作,我试图找到一种在与客户端进行 SSL 握手之前动态加载正确证书的方法。工作流程是:
- 服务器收到一个新的请求
- 获取客户端请求的主机名(即用户设置的DNS CNAME别名)
- 加载属于该主机名的正确证书
- 在当前请求中使用加载的证书 (此处需要帮助)
- 握手(使用加载的证书 - 因请求而异)
有没有办法做到这一点?
html - 带有 hybi-17 的 HTML5 WebSocket
更新:我解决了解码问题,感谢pimvdb
遵循解决方案(在 PHP 中):
*** 原题目开始***
我正在尝试使用hybi-17 handshake为个人应用程序开发 HTML5 WebSocket 。
我从phpwebsocket开始,唯一改变的是握手功能,从原来的到这个:
我为客户端(http://code.google.com/p/phpwebsocket/source/browse/trunk/+phpwebsocket/client.html)和服务器( http://code.google)使用了phpwebsocket源代码。 com/p/phpwebsocket/source/browse/trunk/+phpwebsocket/server.php)。
此时,我测试了应用程序。遵循服务器调试:
这是客户端调试:
我所做的只是连接客户端并发送命令'Hello'。如您所见,服务器收到的是编码数据而不是明文:为什么?
我正在寻找帮助我使用 hybi-17 开发 html5 websocket 的人。
恰兹
PS:这个(为 hybi-17 实现握手)主题和这个(解码网络字符(HTML5 Websocket))可能会有所帮助。
PPS:我在Chromium 15 .0.874.106~r107270-0ubuntu0.11.04.1上测试过
websocket - Websocket 版本 8 Sec-WebSocket-Accept 不匹配
我用 c++ 编写了一个 websocket 服务器,它可以与 websocket 协议 00(握手标头中带有 key1、key2 的那个)正常工作。
现在有了新的更新,我正在尝试对握手工作的新方式做同样的事情。这是我的服务器对握手请求的响应:
"HTTP/1.1 101 切换协议\r\n升级:websocket\r\n连接:升级\r\nSec-WebSocket-Accept: " + serverKey + "\r\n\r\n";
其中 serverkey 计算正确。举个例子:
握手请求:
GET /test HTTP/1.1
升级:websocket
连接:升级
主机:192.168.123.102
Sec-WebSocket-Origin:http: //192.168.123.5
Sec-WebSocket-Key:YB0mPvJ5t8ggCeGUWY39uQ==
Sec-WebSocket-Version: 8
握手响应标头:
HTTP/1.1 101 切换协议
升级:websocket
连接:升级
Sec-WebSocket-Accept:xt9iyCNryQTseELUkHPWjzxA2ts=
我还用https://datatracker.ietf.org/doc/html/draft-ietf-hybi-thewebsocketprotocol-08的示例检查了我的算法,它产生了完全相同的响应。
但是我仍然收到以下错误:
“WebSocket 握手期间出错:Sec-WebSocket-Accept mismatch”
我使用 chrome 15 作为我的浏览器。
你知道出了什么问题吗?
(也在 chrome 检查器网络中,它不显示响应,这是它不接受握手的情况(即使是旧版本))