Tag: https

HTTPSredirect仅在重新加载页面时起作用

我在我的页面上安装了一个SSL证书,该证书运行一个Node.js + Express应用程序,configurationExpress服务器始终强制redirect到HTTP,一切正常,除了httpsredirect只适用于页面重载或者回车键再次按下。 我logging了一个gif来显示发生了什么: http://recordit.co/uBiW3bcQCM 这是我的快速configuration。 var express = require('express'); var path = require('path'); var serveStatic = require('serve-static'); var forceSsl = function (req, res, next) { if (req.headers['x-forwarded-proto'] !== 'https') { return res.redirect(['https://', req.get('Host'), req.url].join('')); } return next(); }; app = express(); app.use(serveStatic(__dirname)); if(process.env.NODE_ENV === 'production') { app.use(forceSsl); } app.all('/*', function(req, res) { res.sendfile('index.html'); }); […]

如何在webstorm中loggingOUTGOING节点的https请求

我一起hacking了一些调用外部web服务的node.js代码,结果很糟糕。 我想login原始请求和响应,以便我可以检查它。 这是事情: 我不直接使用http库 ,我通过OAuth库消耗它。 我已经在oauth库代码中添加了debugging语句,我不喜欢它。 现在看来我将不得不进入http库,并开始搞乱呢? 这不可能是正确的。 如果我在窗户上,我会开火的小提琴手。 一位朋友提到wireshark,但wireshark告诉我,我必须安装X11。 真? 我不会去那个兔子洞。 然后我尝试了节点检查器,但我认为这是服务器代码而不是客户端代码。 它说你想在连接之前启动你的节点进程。 那么我的节点进程是一个testing用例(誓言),结束不久后开始…所以没有运气那里。 我想这将是困难的任何堆栈,但jeez,它使我想念.net! 那么,在使用node.js作为客户端到山狮的外部web服务时,如何检查networking上发生了什么? 谢谢! 担

nodejs https错误:套接字与本地主机挂起

我有这个小的代码片段的目标托pipe在本地主机上的端点 var https = require('https'); var options = { hostname: 'localhost', port: 443, path: '/', method: 'GET', agent: false }; var req = https.request(options, function(res) { console.log("statusCode: ", res.statusCode); console.log("headers: ", res.headers); res.on('data', function(d) { process.stdout.write(d); }); }); req.end(); req.on('error', function(e) { console.error(e); }); 我总是得到错误: {[错误:套接字挂断]代码:'ECONNRESET',sslError:undefined} 看起来,请求甚至不被端点接收,因为它没有被捕获,并且没有超时发生。 如果我从浏览器尝试https:// localhost之类的请求,则发送成功。 如果我只是将代码中的主机更改为诸如encrypted.google.com之类的东西,那么它也可以成功运行。 任何人都知道为什么会这样呢? 编辑 :我也试着添加像接受,用户代理等等的浏览器发送相同的头,但仍然无法正常工作 编辑2 :这是我login时出现的堆栈跟踪: […]

用godaddy gd_bundle.crt运行SSL node.js服务器

我无法让我的SSL服务器使用godaddy的证书 使用Express:3.1.0 下面这个工作与一个键/ crt本地生成/不签署由爸爸(浏览器抱怨,但如果你添加exception它的作品。 var http = require('https'); var privateKey = fs.readFileSync('/var/www/dev/ssl/server.key').toString(); var certificate = fs.readFileSync('/var/www/dev/ssl/server.crt').toString(); var credentials = {key: privateKey, cert: certificate}; var https = http.createServer(credentials, app); 随着godaddy我提供了一个额外的文件gd_bundle.crt,我相信你这样实现,但是我得到一个错误 var http = require('https'); var privateKey = fs.readFileSync('/var/www/prod/ssl/mysite.key').toString(); var certificate = fs.readFileSync('/var/www/prod/ssl/mysite.com.crt').toString(); var ca = fs.readFileSync('/var/www/prod/ssl/gd_bundle.crt').toString(); var credentials = {key: privateKey, cert: certificate, ca: ca}; var […]

节点证书存储是否只读取硬编码证书列表中的节点?

在挣扎了一段时间后,有没有办法将新证书添加到证书节点信任列表中? 看来,节点将只信任存储在硬编码证书列表中的证书: https : //github.com/nodejs/node/blob/master/src/node_root_certs.h 例如,节点应用程序应该与使用自签名证书的https://foo-bar-baz.com通信,从而导致对该域的请求返回如下所示的内容: [RequestError: Error: certificate has expired] 显然这是如何在Java中解决的是将$JAVA_HOME/lib/security/cacerts证书添加到$JAVA_HOME/lib/security/cacerts 。 节点只读取提到的硬编码列表中的证书吗? 或者它也可以从一些操作系统证书存储读取? 如果只是从硬编码列表: 为什么? 可以用这种方式来实现它的原因是什么? 如果某个证书被伪造,那么只能等待下一个节点版本? 如果要添加自签名证书,不可能? (可以编辑可能的硬编码列表来添加/删除证书,但是我不会感觉更改节点源,也可以从类似的问题中得到解决scheme节点的证书存储在哪里?可以在请求时添加证书,但它不在这个问题。类似的问题是2年前发布的,从我调查的情况来看今天是一样的)

iOS HTTPS请求101

NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813) 非常非常令人沮丧! 我已经用这个拉了几个小时的头发。 我在我的Linode服务器上使用自签名证书。 港口是8000,不能让它在443上工作。我不认为这是理由。 这是我的代码,它是99%的样板: NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.myserver.com:8000/test.json"]]; NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES]; 在底部: #pragma mark NSURLConnectionDelegate – (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace { NSLog(@"protectionSpace: %@", [protectionSpace authenticationMethod]); // We only know how to handle NTLM authentication. if([[protectionSpace authenticationMethod] isEqualToString:NSURLAuthenticationMethodNTLM]) return YES; // Explicitly […]

Node.js https.get或https.request中的Kerberos身份validation

我正试图编写一个简单的脚本来请求内部networking上的工具的一些数据。 这里是代码: #!/usr/bin/node var https = require('https'); var fs = require('fs'); var options = { host: '<link>', port: 443, path: '<path>', auth: 'username:password', ca: [fs.readFileSync('../.cert/newca.crt')] }; https.get(options, function(res) { console.log("Got response: " + res.statusCode); res.on('data', function (d) { console.log('BODY: ' + d); }); }).on('error', function(e) { console.log("Got error: " + e.message); }); 现在的问题是,如何使用Kerberos票证进行身份validation而不是在auth:提供我的凭证auth:纯文本?

Node.js HTTPS安全错误

我正在尝试创build一个安全的node.js服务器来使用我的站点使用ssl(https)。 const crypto = require('crypto'), fs = require("fs"), http = require("http"); var privateKey = fs.readFileSync('/home/privatekey.pem'); var certificate = fs.readFileSync('/home/certificate.pem'); var credentials = crypto.createCredentials({key: privateKey.toString(), cert: certificate.toString()}); var handler = function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }; var server = http.createServer(); server.setSecure(credentials); server.addListener("request", handler); server.listen(8084); 但是当我启动我的服务器时,出现以下错误: node.js:116 throw e; // process.nextTick error, or […]

HTTPS代理服务器在node.js

我正在开发一个node.js代理服务器应用程序,我希望它支持HTTP和HTTPS(SSL)协议(作为服务器)。 我目前正在使用像这样的node-http-proxy : const httpProxy = require('http-proxy'), http = require('http'); var server = httpProxy.createServer(9000, 'localhost', function(req, res, proxy) { console.log(req.url); proxy.proxyRequest(req, res); }); http.createServer(function(req, res) { res.end('hello!'); }).listen(9000); server.listen(8000); 我设置我的浏览器在localhost:8000上使用HTTP代理,它工作。 我也想捕捉HTTPS请求(即设置浏览器使用localhost:8000作为HTTPS代理,并在我的应用程序中捕获请求)。 你能帮我吗我该怎么做? PS : 如果我订阅httpProxy服务器对象的upgrade事件,我可以得到请求,但我不知道如何转发请求并发送响应到客户端: server.on('upgrade', function(req, socket, head) { console.log(req.url); // I don't know how to forward the request and send the response to […]

如何使用node.js请求模块使用我自己的证书进行SSL调用?

我正在使用node.js和这个请求模块进行HTTP调用到另一台服务器。 https://github.com/mikeal/request 它工作很好。 我现在需要修改这个代码,使用我公司的SSL证书通过SSL进行呼叫。 在请求模块的文档中,它提到了strictSSL选项: “strictSSL – 设置为true要求SSL证书有效注意:要使用您自己的证书颁发机构,您需要指定使用该ca创build的代理作为选项。 这听起来像我需要做的,但我不明白这个短语:“指定一个代理是与该ca创build作为一个选项”。 1)“代理人”是什么意思? 2)如何“指定代理”3)如何创build代理“使用该代理作为选项”? 一个代码示例将是惊人的,但任何线索都会有所帮助。 谢谢。