Node.js https://<;知识产权>;及<;ip>;:443
我目前正试图理解两个类似curl命令之间的区别 我启动了一个AWS EC2 Ubuntu实例,并在该实例上安装了node.js。然后我创建了一个名为testserver的新目录。在这个目录中,我运行了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
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(以及服务器的扩展代码)
您需要安装TLS证书。HTTPS表示正在使用证书来保护连接,缺少该证书将导致请求失败 请注意,这将停止第一个curl命令的工作。你不能让它们同时工作,因为它们试图使用不同的协议访问同一个端口。啊,这很有意义。我的最终目标是让第二个命令生效。我将快速测试这个问题,并在更新后的代码运行后将这个答案标记为正确。非常感谢你的帮助!请注意,这将停止第一个curl命令的工作。你不能让它们同时工作,因为它们试图使用不同的协议访问同一个端口。啊,这很有意义。我的最终目标是让第二个命令生效。我将快速测试这个问题,并在更新后的代码运行后将这个答案标记为正确。非常感谢你的帮助!Tomasz在这之前有一个有效的解决方案,但这仍然是一个很好的、信息丰富的答案。UpvotingTomasz在这之前有一个有效的解决方案,但这仍然是一个很好的、信息丰富的答案。向上投票