首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node.js 10 HTTPS服务器正在拒绝连接。

Node.js 10 HTTPS服务器正在拒绝连接。
EN

Stack Overflow用户
提问于 2018-08-29 10:22:44
回答 2查看 743关注 0票数 15

我有一个简单的Node.js HTTPS服务器

代码语言:javascript
复制
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

代码语言:javascript
复制
# 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服务器

代码语言:javascript
复制
# 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服务器

代码语言:javascript
复制
# 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)

代码语言:javascript
复制
# 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 server

Wireshark抓住了pcap文件

EN

回答 2

Stack Overflow用户

发布于 2018-09-07 07:57:55

问题是客户端没有广播对服务器所需的密码套件或扩展的支持。

此问题的一些常见解决方案可能是:-如果使用ECC,服务器需要启用支持的曲线扩展。用“--支持的曲线”编译wolfSSL以解决问题。-为了安全起见,wolfSSL默认禁用静态密钥密码套件。如果您的服务器需要,请参阅自述文件顶部的备注,以获得关于重新启用静态密钥密码套件的说明。

下面是讨论您所收到的错误的线程。希望这能解决你的问题

票数 4
EN

Stack Overflow用户

发布于 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连接测试的问题。

因为它是不安全的,但你需要知道原因。

--不安全的

  • ( SSL )此选项显式允许curl执行“不安全”SSL连接和传输。所有SSL连接都试图通过使用默认安装的CA证书包来确保安全。这使得所有被认为是“不安全”的连接都失败了,除非使用-k --不安全。

你也可以试试这个吗?

代码语言:javascript
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52075132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档