标签: handshake

HttpClient:对每个请求进行 ssl 握手

我使用静态 HttpClient,它在 https 上运行非常缓慢。我添加了 -Djavax.net.debug=ssl 并发现再次为每个 https 请求开始握手。看起来它不能重用旧会话,但我找不到原因。

9007199254743735, setSoTimeout(0) called
Allow unsafe renegotiation: false
Allow legacy hello messages: true
Is initial handshake: true
Is secure renegotiation: false
9007199254743735, setSoTimeout(0) called
%% No cached client session
*** ClientHello, SSLv3
...
%% Didn't cache non-resumable client session: [Session-1, SSL_RSA_WITH_RC4_128_MD5]
...
Is initial handshake: true
Run Code Online (Sandbox Code Playgroud)

顺便提一句。在我在这台主机上遇到另一个问题:“收到致命警报:bad_record_mac”之前,它通过只允许 SSLv3 解决了

UPD1:HttpClient 初始化代码

    final SSLContext sslCtx;
    sslCtx = SSLContext.getInstance("SSL");
    sslCtx.init(null, new TrustManager[]{new X509TrustManager() {
            @Override
            public void checkClientTrusted(X509Certificate[] cert,
                    String authType) {
            }

            @Override
            public …
Run Code Online (Sandbox Code Playgroud)

java ssl https handshake apache-httpclient-4.x

6
推荐指数
1
解决办法
1万
查看次数

xcode - 无法获得对握手数据包的回复

当我进行构建时,构建安装在设备中,但XCode发出此错误:

"未能回复握手包"

它不会启动游戏,所以我无法看到控制台进行调试.如果我在设备中手动启动它,游戏运行正常.我需要看控制台进行调试.

我的XCode版本是5.1 iOS版本,设备是7.1(iPod Touch第5代)Unity是4.3.3

我非常感谢你们的解决方案.

提前致谢.

xcode unity-game-engine handshake

6
推荐指数
4
解决办法
6752
查看次数

错误:在TCPConnectWrap.afterConnect上的exports._errnoException处连接ECONNREFUSED

我试图使用URL链接下载文件,但我收到以下错误

扔掉 //未处理的'错误'事件

错误:在exports._errnoException(util.js:746:11)处连接ECONNREFUSED

在TCPConnectWrap.afterConnect [as oncomplete](net.js:1010:19)

我已经使用了wget url但是我正在下面

失败:连接被拒绝

有人说,对于https,我们需要一个服务器证书,并在我们对其进行身份验证时显示它,但是如何显示证书并获取文件

我用过wireshark,看到ssl握手有问题所以我已经下载了服务器的证书,所以我现在该怎么办

我的Nodejs代码

var https = require('https');
var fs = require('fs');

var file = fs.createWriteStream("file.xlsx");
var request = https.get("https://example.com/secure/attachment/206906/a-373_update.xlsx", function(response) {
  response.pipe(file);
});
Run Code Online (Sandbox Code Playgroud)

ssl openssl node.js handshake starttls

6
推荐指数
1
解决办法
4220
查看次数

W3C验证器:"握手警报:unrecognized_name"

我想在W3C Nu Html Checker上验证我的网站,但我收到以下错误,不知道为什么?

IO错误:握手警报:unrecognized_name

IO错误:握手警报:unrecognized_name

虽然我的网站在SSL上工作正常.

我试过握手警报:unrecognized_name错误,但没有帮助.

任何指导如何解决这个很有帮助.我没有那么多的服务器知识.

html w3c-validation handshake

6
推荐指数
0
解决办法
1558
查看次数

Android https握手终止异常

我在尝试发出https请求时会随机获取此异常,有时它会起作用,有时无法与此异常进行握手.而我正在尝试使用棒棒糖和棉花糖.

javax.net.ssl.SSLProtocolException: 
SSL handshake terminated: ssl=0x9d397c00: Failure in SSL library,  usually a protocol error
error:100c543e:SSL routines:ssl3_read_bytes:TLSV1_ALERT_INAPPROPRIATE_FALLBACK (external/boringssl/src/ssl/s3_pkt.c:972 0x9b0bb3e0:0x00000001)
Run Code Online (Sandbox Code Playgroud)

这就是我提出请求的方式

URL url;
HttpURLConnection connection;
try {
    String serverUrl = "...";
    url = new URL(serverUrl);

    connection = (HttpURLConnection) url.openConnection();

    BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));

    int responseCode = connection.getResponseCode();
    if (responseCode == HttpURLConnection.HTTP_OK) {
        Log.i(TAG, "OK");
        Log.i(TAG, "response " + in.readLine());
    } else {
        Log.e(TAG, "Error " + responseCode);
    }

    in.close();
} catch (Exception e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

java ssl https android handshake

6
推荐指数
0
解决办法
368
查看次数

websocket握手源代码中的laddr和raddr是什么

我正在学习 websocket 在 python 3 中的工作原理。我在 websocket 源代码中添加了 print(sock) 到 _handshake.py 的 def 握手,以了解 sock 中的消息是什么,结果是这样的:

Print out sock:<ssl.SSLSocket fd=508, family=AddressFamily.AF_INET, type=0, proto=0, laddr=('192.168.1.2', 58730), raddr=('202.160.125.211', 443)>
Run Code Online (Sandbox Code Playgroud)

我想知道 laddr 和 raddr 是什么?我知道这太基础了,但没有扎实的背景,因为我似乎很难理解我已经在 gg 中搜索了这些关键字,但没有解释。

def handshake(sock, hostname, port, resource, **options):
    headers, key = _get_handshake_headers(resource, hostname, port, options)
    header_str = "\r\n".join(headers)
    send(sock, header_str)
    dump("request header", header_str)
    print("Print out sock:{}".format(sock))
    status, resp = _get_resp_headers(sock)
    if status in SUPPORTED_REDIRECT_STATUSES:
        return handshake_response(status, resp, None)
    success, subproto = _validate(resp, key, options.get("subprotocols"))
    if not success:
        raise …
Run Code Online (Sandbox Code Playgroud)

websocket python-3.x handshake

6
推荐指数
1
解决办法
3084
查看次数

共识算法如何保证一致性?

两位将军证明“不可能设计出安全一致的算法”时,像Paxos这样的共识算法如何“保证安全(免于不一致)”?

当我考虑让两台服务器(1)可靠地交换号码(即两台服务器最终都知道对方确实收到了号码)或(2)两台服务器最终都知道交换失败并且不改变他们的状态,似乎(就像两个将军一样)消息失败总是以一种留下不一致的方式发生(即,一个服务器认为另一个完成了交换,但它没有)。

那么Paxos(或其他任何东西)如何真正保证“免于不一致”?有没有通俗易懂的解释?演示两个服务器进行有保证的交换或在失败时完全放弃交换的最简单的伪代码是什么?

algorithm distributed-computing consensus handshake paxos

5
推荐指数
1
解决办法
1013
查看次数

在 Javascript 客户端中处理不成功的 websocket 升级请求

我想让一个 javascript 客户端进程获取当客户端发出 websocket 升级请求并且该请求不成功时服务器返回的 HTTP 状态代码。

我的服务器返回 HTTP 400 以表明 websocket 升级不成功。

我正在使用谷歌浏览器,当我打开开发者控制台时,我可以看到以下消息:

与“wss://”的 WebSocket 连接失败:WebSocket 握手期间出错:意外响应代码:400

但是,onerror 处理程序不包含此消息,它会收到 1006 错误,但并不表示由于获取 HTTP 400 而导致关闭。

JavaScript 开发人员如何处理握手错误?当客户收到握手错误时,我想向他们提供信息性消息。

我把 websocket 错误放在下面,它似乎没有包含任何我可以用来表明这个错误是 websocket 握手错误的结果。

 Websocket Error: {"path":{"length":0},"cancelBubble":false,"returnValue":true,"srcElement":{"binaryType":"blob","protocol":"","extensions":"","bufferedAmount":0,"readyState":3,"url":"wss://<my address>","URL":"wss://<my address>"},"defaultPrevented":false,"timeStamp":1417828938039,"cancelable":false,"bubbles":false,"eventPhase":2,"currentTarget":{"binaryType":"blob","protocol":"","extensions":"","bufferedAmount":0,"readyState":3,"url":"wss://<my address>","URL":"wss://<my address>"},"target":{"binaryType":"blob","protocol":"","extensions":"","bufferedAmount":0,"readyState":3,"url":"wss://<my address>","URL":"wss://<my address>"},"type":"error"}
Run Code Online (Sandbox Code Playgroud)

javascript websocket handshake

5
推荐指数
1
解决办法
1588
查看次数

如何在python websocket服务器握手响应中设置“Sec-WebSocket-Protocol”标头?

我有一个 python websocket 服务器和一个 nodejs 客户端,但我无法实现websocket 的协议握手

python服务器代码

以下最小的 websocket 服务器使用Flask-sockets (使用gevent-websocket)。文件名是ws_server.py

#!/usr/bin/python3
# -*- coding: utf-8 -*-
from flask import Flask, request, Response
from flask_sockets import Sockets

app = Flask(__name__)
sockets = Sockets(app)

@sockets.route('/')
def echo_socket(ws):
    # print("type request: ",type(request))
    # print("dir  request: ", dir(request))
    print("request.headers: ", request.headers)
    # print("type ws: ",type(ws))
    # print("dir  ws: ",dir(ws))

    if hasattr(request, "Sec-Websocket-Protocol"):
        print(request.headers["Sec-Websocket-Protocol"])
    else:
        print("INFO: No protocol specified")

    if request.headers["Sec-Websocket-Protocol"] == "aProtocol":
        print("INFO: protocol is …
Run Code Online (Sandbox Code Playgroud)

python websocket node.js handshake

5
推荐指数
1
解决办法
3277
查看次数

由于 x509 证书依赖于旧版通用名称字段,因此无法使用 Golang 连接到服务器

我正在尝试连接 mongodb 服务器,要连接我必须提供 CA 证书文件和 tls 证书文件。

当我使用以下命令时,我没有问题

$ mongo --host customhost:port DB --authenticationDatabase=DB -u ACCOUNT -p PWD --tls --tlsCAFile /etc/ca-files/new-mongo.ca.crt --tlsCertificateKeyFile /etc/ca-files/new-mongo-client.pem 
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试与 mongo 连接(并且仅使用 tls 客户端进行测试)时,出现以下错误:

failed to connect: x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0
Run Code Online (Sandbox Code Playgroud)

如果我使用 env 变量一切正常,但我想知道如何修复它而不必使用它。

$ mongo --host customhost:port DB --authenticationDatabase=DB -u ACCOUNT -p PWD --tls --tlsCAFile /etc/ca-files/new-mongo.ca.crt --tlsCertificateKeyFile /etc/ca-files/new-mongo-client.pem 
Run Code Online (Sandbox Code Playgroud)

证书:

failed to connect: x509: certificate relies on legacy Common Name field, use …
Run Code Online (Sandbox Code Playgroud)

ssl ca go mongodb handshake

5
推荐指数
1
解决办法
346
查看次数