问题标签 [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.
ssl - 如何检测传入的 SSL (https) 握手(SSL 有线格式)?
我正在编写一个接受传入 TCP 连接的服务器。假设服务器已经接受了一个 TCP 连接,并且已经从客户端收到了 16 个(左右)字节。知道这 16 个字节后,服务器如何检测客户端是否要发起 SSL 握手?
我做了一个实验,结果表明在我的 Linux 系统上通过 SSL 连接到 localhost(127.0.0.1 或 AF_UNIX)会使客户端发送以下握手(hexdump),然后是 16 个看似随机的字节:
服务器应该如何探测这些前几个字节,以便能够确定客户端是否正在发送 SSL 握手?对于所有有效的 SSL 握手,探测必须返回 true,并且对于客户端发送的不是 SSL 握手的消息,它必须返回 false 的概率很高。不允许使用任何库(如 OpenSSL)进行探测。探针必须是简单的代码(如 C 或 Python 中的几十行)。
java - 在 Java 中实现 TCP 的 3 次握手
我想使用 Java 实现 TCP 协议。我已经阅读了 Sun 文档和示例,但它们都只是打开一个套接字,客户端等待服务器接受连接然后发送数据。
我想知道如何使用 Java 实现三向握手和数据验证?服务器和客户端如何交换序列号?Java 是否提供任何类/方法(或至少是接口)来实现三向握手?
有人可以给我一些想法,或者链接到一些例子吗?
提前致谢,
ssl - SSL 握手失败 - 一个威瑞信链证书 - 包含两个 CA 签名证书和一个自签名证书
我遇到了一个问题并试图调试它。我们购买了威瑞信证书。当我们使用:
SSL 握手永远不会完成,最后我们看到错误:
它显示 3 个---BEGIN/END CERTIFICATE---
标签。链中的两个证书是 Verisign 签名的,但一个是自签名的。
如果有人可以请解释这个自签名证书如何出现在 CA 签名证书中?
这个错误是
19 (self signed certificate in certificate chain)
良性的吗?如果不是,可能是什么原因造成的?客户端在受信任的存储中拥有 CA 证书,但自签名证书没有任何内容。你认为这会导致问题吗?如果是,我该如何:
- 如何从链证书中删除自签名证书,只留下 2 个 CA 签名证书?
- 将此自签名证书添加到客户端受信任的商店?
ssl - 使用新证书后 TLS 握手失败
我正在尝试使用 TLS 协议打开一个安全套接字。查看客户端和服务器之间发送的记录,我可以通过 ClientHello、ServerHello、Certificate(服务器)、ServerHelloDone、ClientKeyExchange 和 ChangeCipherSpec(客户端)进行。但是,服务器无法解密客户端的 Finished 消息。接下来交换一些常规的 TCP 消息,首先从服务器发送一条带有 Finished 标志的记录,然后从客户端发送两条记录,第二条带有 Finished 标志,然后再从服务器发送一条记录。
此设置曾经有效,但我最近更改了服务器的证书。鉴于此,我预计握手会在证书记录之后失败,而不是在尝试解密第一条加密数据时。此握手错误是否表明证书未经身份验证?如果不是,它可以说明什么?我没有收到任何警报。
java - Java 服务器自签名证书 + 客户端证书和 SSL handshake_failure
我正在连接到之前成功使用的 Web 服务,但是现在他们更改了主机名并向我发送了两个 .pem 文件;一个是 CA,另一个是我的新客户端证书。
(我正在使用 Java 1.5、Spring + Spring Web Services 和 Apache httpclient,但我怀疑我的问题出在证书、密钥和 SSL 本身。)
我已经导入了两个 .pem 文件,以及我从 Firefox 导出到我的 cacerts 的主机的 .crt。但是,自从我得到这个异常以来,我显然做错了:
当我使用 System.setProperty("javax.net.debug", "all") 打开 SSL 日志记录时,我看到服务器证书被接受,然后这发生在客户端密钥交换之后或期间的某个地方:
这是什么意思?消息“no IV for cipher”是什么意思?
编辑:经过一番调查,我发现了一个愚蠢的错误 - 因为 javax.net.ssl.keyStore 属性设置不正确,所以根本没有加载密钥库。但是,现在我得到连接重置异常,我仍然得到“没有密码的 IV”......所以我在这里再次问基本相同的问题。
vb.net - Websocket (draft 76) handshake difficulties!
I'm using the following keys to calculate the correct handshake response string:
Key1: 18x 6]8vM;54 *(5: { U1]8 z [ 8
Key2: 1_ tx7X d < nw 334J702) 7]o}` 0
Key3: 54:6d:5b:4b:20:54:32:75
I've calculated Key1 and Key2's values:
Key1: 0947fa63 (hex)
Key2: 0a5510d3
However I'm not sure on what to do next, from what I can gather, you concatenate them and MD5 it, but that doesn't seem to work out i.e. MD5 hashing: 0947fa630a5510d3546d5b4b20543275
Help!
java - Java 服务器自签名证书 + 客户端证书和 SSL - 连接重置
(我已经问过类似的问题,事实证明我的客户端密钥没有被加载,但我只有一个例外,所以我发布了另一个问题。)
我正在连接到之前成功使用的 Web 服务,但是现在他们更改了主机名并向我发送了两个 .pem 文件;一个是 CA,另一个是我的新客户端证书。
(我正在使用 Java 1.5、Spring + Spring Web Services 和 Apache httpclient,但我怀疑我的问题出在证书、密钥和 SSL 本身。)
我已经导入了两个 .pem 文件,以及我从 Firefox 导出到我的 cacerts 的主机的 .crt。但是,自从我得到这个异常以来,我显然做错了:
当我使用 System.setProperty("javax.net.debug", "all") 打开 SSL 日志记录时,我看到服务器证书被接受,然后在客户端密钥交换之后或期间发生这种情况:
为什么我的连接不断重置,我该如何解决这个问题?
java - 使用 Java 和 Tomcat 的 web 服务中的 SSL 握手问题
我必须使用我的 Java Web 应用程序(在 Tomcat 上运行)使用在 Axis 中完成的 Web 服务。制作 Web 服务的公司使用 HTTPS 和自签名证书进行测试。
我已经运行了一个 Netbeans 向导来生成一个基于 WSDL 的 Web 服务,并且这样做是正确的。如果我使用浏览器进入 web 服务的网站,我会因为 SSL 证书而收到警告,我必须创建一个异常。
尝试运行我的代码时,在建立 SSL 连接时出现异常。例外情况是:
1.
com.sun.xml.ws.client.ClientTransportException:HTTP 传输错误:javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure
有时(不更改代码)
2.
com.sun.xml.ws.client.ClientTransportException:HTTP 传输错误:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:找不到到请求目标的有效认证路径
我想我必须将证书合并到 Java VM 和/或 Tomcat 中,并且还告诉忽略它不是受信任的来源。
这个怎么做?如何正确使用这个安全的网络服务?
如果我提供的信息还不够,请询问更多。
谢谢
以西结
更新:
这两件事我都试过了,都没有成功,例外都是一样的。
选项1)
选项 2) KeyStore ks = KeyStore.getInstance("pkcs12"); ks.load(new FileInputStream("/home/serverapp/BSS-cert.p12"), "password".toCharArray());
此外,由于我认为问题可能出在 Web 服务上,因此我尝试建立 HTTPS 连接,但在打开输入流时它失败并出现同样的错误。
tcp - TCP 3-way handshake question
So a client starts a TCP connection by sending a SYN packet to a server with seq. # X. The server then responds with a SYN+ACK for X+1. The same goes for a FIN packet when the close connection protocol is enacted.
So my question is why does the server ACK for X+1 instead of just X? I thought SYN and FIN packets didn't piggyback any data. Is there some other reason for this? I'm confused as to why the server will ACK X+1 instead of X.
delphi - I'd like to make a websocket handshake with delphi6
I'm trying to build a websocket server on Delphi6 using the draft hixie-76 and i have a problem with the handshake.
The md5 fingerprint i get with the three parts does not seem to be correct when i try it, but when i use the same algorythm with the exemple given in the protocole spec i get the good md5 response...
I'm processing like this, transform the number found in key1 divided by the number of spaces in a 32 bits word, same with key2 and finally adding the last 8 bytes (key3) to get a 128 bits string which i use as md5 entry.
using 155712099, 173347027 for key1 and key2 and 'Tm[K T2u' for key3, i get the correct md5 fingerprint and so i don't understand why this algo won't give a correct fingerprint to the client
here is an exemple of what i receive :
and the handshake i give in response
Maybye there's another probleme with my response but it reall seems that i have a problem with my md5 fingerprint.
Does anyone see where my mistake is??
Thanks in advance for your help
Update
I have seen this unit but unless i'm very bad at reading, the handshake part of this class does not calculate any md5 sum, i think it uses an older version of the protocol and not the current (76)
When i look at the following code i see that the answer is written without any md5 response.
` try // Read request headers HandshakeRequest := TWebSocketRequest.Create(ServerConnection);
except on E: TWebSocketHandshakeException do begin // Close the connection if the handshake failed ServerConnection.Disconnect; end;`
Thanks again
Update 2011 04 14
I have finally found where the problem was...
i was building my response like that :
resp := [...] +'Sec-WebSocket-Origin: '+ origin + #13#10 +
so there was 3 0x0D 0x0A instead of 2 before the md5 fingerprint ...
#13#10#13#10 +
md5response;
Since i cannot answer my own question i won't be able to mark it solve but it is! :)