Tag: https

NodeJS,如何debuggingGET请求TLSSocket.socketOnData上的parsing错误?

我对NodeJS颇为陌生,并试图用AWS Lambda写一个简单的Alexa服务来告诉我房间的温度。 我遇到了一个困扰我的问题 – 当我尝试与https端点进行通信以查询家庭自动化恒温器的某些数据时 – 我的Node应用程序终止时出现错误: Error: Parse Error at TLSSocket.socketOnData (_http_client.js:362:20) at emitOne (events.js:96:13) at TLSSocket.emit (events.js:188:7) at readableAddChunk (_stream_readable.js:176:18) at TLSSocket.Readable.push (_stream_readable.js:134:10) at TLSWrap.onread (net.js:551:20) 这是一个非常简单的通过https的GET请求,端点的提供者没有使用Python的问题。 我尝试将我的代码移动到我的笔记本电脑上的本地节点设置,并仍然有问题(所以它不是AWS)。 因为它是https和我的控制之外的服务,我不能轻易wiresharkstream量发现,如果响应是以一些微妙的方式损坏 – 但我尝试使用Browsify转换代码运行在Web浏览器(我可以使用wireshark),当然,它的工作原理,我可以看到没有什么奇怪的JSON响应,然后我得到。 我已经尝试使用响应模块,而不是节点中的核心https库,但我仍然得到相同的基础错误。 我被困在我能做什么 – 而且不知道如何debugging。 它让我觉得格式问题或时间问题 – 但我不知道如何处理这个问题。 想法任何人? 我的代码如下所示: var https = require('https'); var crypto = require('crypto'); function executeHttpRequest(path, data, method, username, […]

HTTP在不同的端口redirect到HTTPS

我正在尝试将每个http请求redirect到https服务器。 如果https服务器的端口是443, 这工作正常 。但是,如果我尝试redirect到不同的端口,它不会发生。 这是我的代码: http.createServer(function(req,res){ var host = req.headers['host'], url = req.url; res.writeHead(301, {"Location": "https://" + host + ":"+SERVER.SPORT + url}) res.end() }).listen(SERVER.PORT) https.createServer(SERVER.HTTPS_OPTIONS,app).listen(SERVER.SPORT)

CloudFlare“SSL:灵活的”HTTPS不能在自定义端口上工作

我在CloudFlare上的域名指向了DigitalOcean Droplet的IP地址。 当尝试使用自定义端口通过CloudFlare上的域访问网站时,我得到: error 525 SSL handshake failed 。 我的CloudFlare Crypto SSL is set to: Flexible (…据我所知 – 在DigitalOcean液滴上不需要SSL)。 示例地址: 通过DigitalOcean IPv4 (服务器上没有安装SSL) http://46.101.xxx.xxx/ – 100%的工作 https://46.101.xxx.xxx/ – 0%根本不工作(服务器设置为:80) http://46.101.xxx.xxx:2053/api – 100%的工作 http://46.101.xxx.xxx:2083/ – 100%的工作 通过CloudFlare : https://example.com/ – 100%的工作 https://example.com:2053/api – 来自CloudFlare的50%错误:525 SSL握手失败 https://example.com:2083/ – 来自CloudFlare的50%错误:525 SSL握手失败 我将服务器configuration为使用为https连接保留的端口:https: //support.cloudflare.com/hc/en-us/articles/200169156-Which-ports-will-Cloudflare-work-with- 当我设置主服务器使用端口:443而不是:80它显然不工作,因为我没有服务器上的SSL。 https://example.com:2053/api应该如何configuration为与CloudFlare配合使用?

使用Node.js将httpredirect到https

我有一个Node.js服务器,在域上有一个活动的SSL证书。 我已经阅读了一些关于这个网站的回复,但是即使当我涉及到这些已经解决的问题时,我也会得到一个错误。 var express = require('express'); var https = require('https'); var http = require('http'); var path = require('path'); var fs = require('fs'); var mysql = require('mysql'); var queue = {}; var qc = {}; var app = express(); var options = { key: fs.readFileSync('sslcert/domain-name.key', 'utf8'), cert: fs.readFileSync('sslcert/domain-name.csr', 'utf8') }; var httpServer = http.createServer(app); var httpsServer […]

保护我的HTTP连接

我目前正在做一个家庭自动化项目。 以下是我的设置。 ESP8266 WiFi模块将连接到各种传感器。 轻型networking服务器将在模块上运行。 将部署一个Linode Cloud,运行某些NodeJS脚本和MongoDB数据库。 移动应用程序(客户端)将向云发送请求以控制和监视各种传感器。 我将使用JSON Web Tokens保护应用程序和云之间的连接。 另外我会尝试使用HTTPS来确保这个连接。 我很困惑如何保护云服务器和ESP8266模块之间的通信。 我做了很多研究。 知道某些概念,但不能得到一个清晰完整的画面。 有人请指导我。 谢谢。

带有Express的Socket.IO不能使用https(Apache2 Ubuntu16.04)

我不是很有经验的SSL证书,我跳了一个人可以帮助我找出我做错了什么。 我正在尝试使用端口443(从中服务器客户端应用程序而不是NodeJS / Express / Socket.io应用程序)启用了SSL的Apache2来托pipe带有自己端口(*:1729)的NodeJS应用程序。 当我用http设置Express时,它工作正常,我的客户端应用程序没有错误地与NodeJS应用程序通信,但是当我使用https这样的express时: this.express = require('express'); this.app = this.express(); var https = require('https'); var fs = require('fs'); var sslPath = '/etc/letsencrypt/live/yourdomain.example.com/'; var options = { key: fs.readFileSync(sslPath + 'privkey.pem'), cert: fs.readFileSync(sslPath + 'fullchain.pem') }; this.server = https.createServer(options, this.app); this.io = require('socket.io').listen(this.server); this.server.listen(1729); 当我的客户端应用程序尝试连接时,我得到这个错误: node: ../src/util-inl.h:196: TypeName* node::Unwrap(v8::Local<v8::Object>) [with TypeName = node::TLSWrap]: […]

NodeJS / Express + HTTPS:如何将密钥和证书部署到AWS EC2节点?

Node.js&Express.js是我用来编写Web API服务的新手。 要启用HTTPS,服务使用以下代码: const server = https .createServer({ key: fs.readFileSync('./cert/myservice.key'), cert: fs.readFileSync('./cert/myservice.crt') }) .listen(serverConfig.server.port, () => logger.info(`MyService is up and running`)); 很容易看出,这段代码假设.key和.crt文件在服务应用程序位置本地可用。 如果我想将服务部署到单个AWS EC2主机(为了简单起见),这些文件将不得不在那里,这似乎不是一个安全的解决scheme。 我正在考虑使用AWS IAM来保护这些秘密。 问题在于无法直接从IAM“部署”/将密码提供给EC2节点。 我不得不使用IAM的API来获取秘密,但问题是如何使EC2上的AWS凭证可用。 问题:是否有build议的安全方式将密钥(包括证书和密钥)部署到AWS EC2节点?

无法将.pem文件导入到Express

我来自另一个没有得到答复的问题: 那么,我发现了一些新的东西。 我仍然不能导入我的证书,当我尝试执行我的节点/快速应用程序,它失败了相同的错误,但现在我认为,在某种程度上,FS包不正确读取我的.pem文件。 看一看: // Setup HTTPS const httpsPort = 3443; const options = { key: fs.readFileSync("./key.pem"), cert: fs.readFileSync("./cert.pem") }; console.log("KEY: ", options.key) console.log("CERT: ", options.cert) var secureServer = https.createServer(options, app).listen(httpsPort, () => { console.log(">> CentraliZr listening at port "+httpsPort); }); 我得到以下输出: C:\Zerok\dev\centralizr>node index.js KEY: <Buffer 2d 2d 2d 2d 2d 42 45 47 49 […]

HTTPS密码在节点js 0.4

节点0.2.6方式: var credentials = crypto.createCredentials({ "key": SSLKey, "cert": SSLCert, "ca": Ca, "password": SSLKeyPass }) var client = http.createClient(apiPort, host, true, credentials) node 0.4 way: var options = { host: apiHost, port: apiPort, method: 'GET', path: uri, headers: {host: host}, key:SSLKey, cert:SSLCert, ca:Ca, password:SSLKeyPass } var request = https.request(options, function (response) { 正如你所看到的,有一个需要的密码,我不知道密码应该在节点0.4的位置。 SSLKeyPass在节点0.4上的位置?

Node.JS分段上传到脸谱图

我试图上传一张照片到Facebook,我无法find似乎得到multipart上传工作。 我找不到任何文档或库。 有没有其他人有这个运气?