Node.js https://<;知识产权>;及<;ip>;:443

Node.js https://<;知识产权>;及<;ip>;:443,node.js,https,Node.js,Https,我目前正试图理解两个类似curl命令之间的区别 我启动了一个AWS EC2 Ubuntu实例,并在该实例上安装了node.js。然后我创建了一个名为testserver的新目录。在这个目录中,我运行了npminit,然后运行npm install express。然后我编写了一个简单的web侦听器,名为testserver.js,如下所示: const express = require('express') const app = express() app.get('/', functio

我目前正试图理解两个类似curl命令之间的区别

我启动了一个AWS EC2 Ubuntu实例,并在该实例上安装了node.js。然后我创建了一个名为testserver的新目录。在这个目录中,我运行了
npminit
,然后运行
npm install express
。然后我编写了一个简单的web侦听器,名为
testserver.js
,如下所示:

const express = require('express')
const app = express()

app.get('/', function(req, res){
    console.log('Got a request!')
    res.send('Request received!\n')
})

app.listen(443, function(){
    console.log('Server started')
})
最后,我使用命令
sudo node test server.js
启动了服务器,服务器成功启动

使用aws ec2授权安全组入口,我允许通过端口443从本地IP地址到实例进行通信。然后,我尝试使用以下两个curl命令测试连接:
curl:443
curl https://
。第一个命令给出了所收到的
请求的预期输出。但是,我从第二个命令收到了这个错误:
curl:(35)OpenSSL SSL\u connect:SSL\u error\u SYSCALL连接到:443

现在,我远不是一个网络专家,但我希望这两个命令都能以相同的方式运行。基于此结果,我有两个问题:

  • 这两个命令之间有什么区别
  • 如何更改配置,使第二个命令与第一个命令一样工作

  • 您的应用程序在443端口上提供常规HTTP服务。为了使用https协议,您需要使用加密密钥

    var fs = require('fs');
    var http = require('http');
    var https = require('https');
    var privateKey  = fs.readFileSync('sslcert/server.key', 'utf8');
    var certificate = fs.readFileSync('sslcert/server.crt', 'utf8');
    
    var credentials = {key: privateKey, cert: certificate};
    var express = require('express');
    var app = express();
    
    app.get('/', function(req, res){
        console.log('Got a request!')
        res.send('Request received!\n')
    })
    
    var httpsServer = https.createServer(credentials, app);
    
    httpsServer.listen(443);
    
    命令
    curl:443
    正在打开到给定
    ip
    上端口443的http连接,
    curl https://
    正在打开到给定
    ip
    的https连接


    如果您希望对流量进行加密,请坚持使用https://
    版本(以及服务器的扩展代码)。

    您的应用程序在443端口上提供常规HTTP服务。为了使用https协议,您需要使用加密密钥

    var fs = require('fs');
    var http = require('http');
    var https = require('https');
    var privateKey  = fs.readFileSync('sslcert/server.key', 'utf8');
    var certificate = fs.readFileSync('sslcert/server.crt', 'utf8');
    
    var credentials = {key: privateKey, cert: certificate};
    var express = require('express');
    var app = express();
    
    app.get('/', function(req, res){
        console.log('Got a request!')
        res.send('Request received!\n')
    })
    
    var httpsServer = https.createServer(credentials, app);
    
    httpsServer.listen(443);
    
    命令
    curl:443
    正在打开到给定
    ip
    上端口443的http连接,
    curl https://
    正在打开到给定
    ip
    的https连接

    如果您希望对流量进行加密,请坚持使用
    https://
    version(以及服务器的扩展代码)

  • 这两个命令之间有什么区别 :443只是端口配置,与:80没有区别。它只是告诉服务器在该端口上提供内容。443传统上是为HTTPS连接保留的端口,类似于80传统上是标准HTTP

  • 如何更改配置,使第二个命令与第一个命令一样工作 您需要安装TLS证书。HTTPS表示正在使用证书来保护连接,缺少该证书将导致请求失败

  • 这两个命令之间有什么区别 :443只是端口配置,与:80没有区别。它只是告诉服务器在该端口上提供内容。443传统上是为HTTPS连接保留的端口,类似于80传统上是标准HTTP

  • 如何更改配置,使第二个命令与第一个命令一样工作
    您需要安装TLS证书。HTTPS表示正在使用证书来保护连接,缺少该证书将导致请求失败

    请注意,这将停止第一个curl命令的工作。你不能让它们同时工作,因为它们试图使用不同的协议访问同一个端口。啊,这很有意义。我的最终目标是让第二个命令生效。我将快速测试这个问题,并在更新后的代码运行后将这个答案标记为正确。非常感谢你的帮助!请注意,这将停止第一个curl命令的工作。你不能让它们同时工作,因为它们试图使用不同的协议访问同一个端口。啊,这很有意义。我的最终目标是让第二个命令生效。我将快速测试这个问题,并在更新后的代码运行后将这个答案标记为正确。非常感谢你的帮助!Tomasz在这之前有一个有效的解决方案,但这仍然是一个很好的、信息丰富的答案。UpvotingTomasz在这之前有一个有效的解决方案,但这仍然是一个很好的、信息丰富的答案。向上投票