我使用静态 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) 当我进行构建时,构建安装在设备中,但XCode发出此错误:
"未能回复握手包"
它不会启动游戏,所以我无法看到控制台进行调试.如果我在设备中手动启动它,游戏运行正常.我需要看控制台进行调试.
我的XCode版本是5.1 iOS版本,设备是7.1(iPod Touch第5代)Unity是4.3.3
我非常感谢你们的解决方案.
提前致谢.
我试图使用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) 我想在W3C Nu Html Checker上验证我的网站,但我收到以下错误,不知道为什么?
IO错误:握手警报:unrecognized_name
虽然我的网站在SSL上工作正常.
我试过握手警报:unrecognized_name错误,但没有帮助.
任何指导如何解决这个很有帮助.我没有那么多的服务器知识.
我在尝试发出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) 我正在学习 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) 我想让一个 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) 我有一个 python websocket 服务器和一个 nodejs 客户端,但我无法实现websocket 的协议握手。
以下最小的 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) 我正在尝试连接 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)