我有一个简单的Node.js HTTPS服务器
const https = require('https');
const fs = require('fs');
const config = {
key: fs.readFileSync('cert/server-key.pem'),
cert: fs.readFileSync('cert/server-crt.pem'),
ca: fs.readFileSync('cert/ca-crt.pem'),
};
const server = https.createServer(config, ((req, res) => {
console.log('Got request');
res.end();
}));
server.listen(3333);我在嵌入式系统上使用curl。
# curl -V
curl 7.52.1 (arm-unknown-linux-gnu) libcurl/7.52.1 wolfSSL/3.9.8
Protocols: file ftp ftps http https smtp smtps telnet tftp
Features: IPv6 Largefile SSL UnixSockets 当我使用其他版本的Node.js时,10版--一切都很好。
运行在Node.js v8.2.1上的HTTPS服务器
# curl -k -v "https://10.43.11.128:3333/"
* Trying 10.43.11.128...
* TCP_NODELAY set
* Connected to 10.43.11.128 (10.43.11.128) port 3333 (#0)
* SSL connected
> GET / HTTP/1.1
> Host: 10.43.11.128:3333
> User-Agent: curl/7.52.1
> Accept: */*运行在Node.js v10.1.0上的HTTPS服务器
# curl -k -v "https://10.43.11.128:3333/"
* Trying 10.43.11.128...
* TCP_NODELAY set
* Connected to 10.43.11.128 (10.43.11.128) port 3333 (#0)
* SSL_connect failed with error -313: revcd alert fatal error
* Curl_http_done: called premature == 1
* Closing connection 0
curl: (35) SSL_connect failed with error -313: revcd alert fatal error关于HTTPS,Node.js 10中发生了什么变化?我怀疑我将不得不更改SSL设置,但我确定如何更改。
最新情况:
尝试访问HTTP (Node.js v10.1.0)
# curl --insecure -v "10.43.11.128:3333/"
* Trying 10.43.11.128...
* TCP_NODELAY set
* Connected to 10.43.11.128 (10.43.11.128) port 3333 (#0)
> GET / HTTP/1.1
> Host: 10.43.11.128:3333
> User-Agent: curl/7.52.1
> Accept: */*
>
* Curl_http_done: called premature == 0
* Empty reply from server
* Connection #0 to host 10.43.11.128 left intact
curl: (52) Empty reply from serverWireshark抓住了pcap文件。
发布于 2018-09-07 07:57:55
问题是客户端没有广播对服务器所需的密码套件或扩展的支持。
此问题的一些常见解决方案可能是:-如果使用ECC,服务器需要启用支持的曲线扩展。用“--支持的曲线”编译wolfSSL以解决问题。-为了安全起见,wolfSSL默认禁用静态密钥密码套件。如果您的服务器需要,请参阅自述文件顶部的备注,以获得关于重新启用静态密钥密码套件的说明。
下面是讨论您所收到的错误的线程。希望这能解决你的问题
发布于 2018-09-06 07:13:05
验证哪些标头是curl发送的,为此可以使用-v参数。
卷曲-vIX "https://10.43.11.128:3333/“
在节点中,
只在console.log(req._headers)之后进行req.end(),并比较您的头,以进一步解决problem.Also I请求尝试wireshark (http://www.wireshark.org/)进行ssl连接测试的问题。
因为它是不安全的,但你需要知道原因。
--不安全的
你也可以试试这个吗?
const https = require("https"),
fs = require("fs");
const options = {
key: fs.readFileSync("/cert/server-key.pem"),
cert: fs.readFileSync("/cert/server-cert.pem")
};
const app = express();
app.use((req, res) => {
res.writeHead(200);
res.end("hello world\n");
});
app.listen(8000);
https.createServer(options, app).listen(8080);https://stackoverflow.com/questions/52075132
复制相似问题