问题标签 [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 投票
2 回答
8544 浏览

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 中的几十行)。

0 投票
5 回答
5801 浏览

java - 在 Java 中实现 TCP 的 3 次握手

我想使用 Java 实现 TCP 协议。我已经阅读了 Sun 文档和示例,但它们都只是打开一个套接字,客户端等待服务器接受连接然后发送数据。

我想知道如何使用 Java 实现三向握手和数据验证?服务器和客户端如何交换序列号?Java 是否提供任何类/方法(或至少是接口)来实现三向握手?

有人可以给我一些想法,或者链接到一些例子吗?

提前致谢,

0 投票
5 回答
137574 浏览

ssl - SSL 握手失败 - 一个威瑞信链证书 - 包含两个 CA 签名证书和一个自签名证书

我遇到了一个问题并试图调试它。我们购买了威瑞信证书。当我们使用:

SSL 握手永远不会完成,最后我们看到错误:

它显示 3 个---BEGIN/END CERTIFICATE---标签。链中的两个证书是 Verisign 签名的,但一个是自签名的。

  1. 如果有人可以请解释这个自签名证书如何出现在 CA 签名证书中?

  2. 这个错误是19 (self signed certificate in certificate chain)良性的吗?如果不是,可能是什么原因造成的?

  3. 客户端在受信任的存储中拥有 CA 证书,但自签名证书没有任何内容。你认为这会导致问题吗?如果是,我该如何:

    1. 如何从链证书中删除自签名证书,只留下 2 个 CA 签名证书?
    2. 将此自签名证书添加到客户端受信任的商店?
0 投票
1 回答
1026 浏览

ssl - 使用新证书后 TLS 握手失败

我正在尝试使用 TLS 协议打开一个安全套接字。查看客户端和服务器之间发送的记录,我可以通过 ClientHello、ServerHello、Certificate(服务器)、ServerHelloDone、ClientKeyExchange 和 ChangeCipherSpec(客户端)进行。但是,服务器无法解密客户端的 Finished 消息。接下来交换一些常规的 TCP 消息,首先从服务器发送一条带有 Finished 标志的记录,然后从客户端发送两条记录,第二条带有 Finished 标志,然后再从服务器发送一条记录。

此设置曾经有效,但我最近更改了服务器的证书。鉴于此,我预计握手会在证书记录之后失败,而不是在尝试解密第一条加密数据时。此握手错误是否表明证书未经身份验证?如果不是,它可以说明什么?我没有收到任何警报。

0 投票
1 回答
7680 浏览

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”......所以我在这里再次问基本相同的问题。

0 投票
2 回答
713 浏览

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!

0 投票
2 回答
11785 浏览

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 日志记录时,我看到服务器证书被接受,然后在客户端密钥交换之后或期间发生这种情况:

为什么我的连接不断重置,我该如何解决这个问题?

0 投票
4 回答
22673 浏览

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 连接,但在打开输入流时它失败并出现同样的错误。

0 投票
1 回答
1737 浏览

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.

0 投票
1 回答
1621 浏览

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 +
#13#10#13#10 +
md5response;
so there was 3 0x0D 0x0A instead of 2 before the md5 fingerprint ...

Since i cannot answer my own question i won't be able to mark it solve but it is! :)