Tag: https

如果是HTTPS请求,如何findnode.js中的远程地址?

HI。 在node.js中,如果是http请求,我可以通过req.connection.remoteAddress获得remoteAddress, 那么,如何获取https请求呢? 我发现有req.socket.remoteAddress,但我不确定。 请指教。 谢谢。

将TLS / SSL安全POST请求从node.js发送到IIS

我在Windows Server 2012上运行IIS 8.5(使用iisnode发布)上的node.js webapp,并将其configuration为使用我刚刚购买的此证书。 所以我把证书添加到服务器上: 并configuration我的网站使用https和我刚刚configuration的证书: 现在我可以访问我的网站,如https://example.com 好的,我有一些node.js客户端运行在我的networking之外的某些计算机上,并不时地向服务器发送一些数据。 我想保证这个连接,现在我有一个SSL证书。 我的目标是从客户端执行HTTPS POST,只有使用有效证书的客户端才能将数据上传到我的https://example.com/uploadurl。 所以首先,我强迫ISS在我的网站上申请证书。 在SSLconfiguration中,我选中了“Required”选项: 接下来要做的就是使用https和我的证书从我的node.js上传数据。 问题是我的node.js https POST请求获取IIS的权限拒绝网站作为回应。 我的node.js请求代码是: var config = require('./config'); var request = require('request'); var path = require('path'); var fs = require('fs'); var certFile = path.resolve(__dirname, 'tls/certificate.crt'); var keyFile = path.resolve(__dirname, 'tls/certificate.key'); var caFile = path.resolve(__dirname, 'tls/certificate.ca.crt'); var pfxFile = path.resolve(__dirname, 'tls/certificate.pfx'); […]

仅在某些path上使用Node.js客户端证书身份validation

我有一个基于node.js的web应用程序,需要来自客户端的安全( https )连接。 我想要的是,在某些path上,客户端证书身份validation是必需的,而不是其他path。 所以例如。 如果用户转到https://www.example.com/main,则服务器不需要客户端证书身份validation(因此浏览器不会询问任何内容)。 但是,如果用户导航到https://www.example.com/secure ,那么将需要客户端证书authentication(因此浏览器将popup一个对话框来select使用哪个证书)。 我怎么能做到这一点。 我能够强制客户端证书身份validation,如果我通过requestCert:true和rejectUnauthorized:true到https.createServer选项。 这种方法的问题是每个path都需要客户端证书。

执行https请求时出现CERT_UNTRUSTED错误

我试图从我的节点服务器端执行https request ,但它给我以下错误: – Caught exception: Error: CERT_UNTRUSTED 如果我执行http request那么它工作正常,但对于https 链接 它不工作 。 这是我的代码: var request = require('request'); request('https://en.m.wikipedia.org/wiki/Astrid_Olofsdotter_of_Sweden', function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body) // Show the HTML for the Google homepage. } }) 任何想法?

nodejs ssl“无法获得本地颁发者证书”

我已经获得SSL证书用于签署客户端请求以及相关的CA证书。 我可以使用openssl来validation它: $ openssl s_client -CAfile /etc/ssl/foo/ca-combined.pem -servername foo.co.in -connect foo.co.in:443 CONNECTED(00000003) … snip … Verify return code: 0 (ok) — closed (我将2个CA证书混合成一个文件)。 但是当我尝试使用节点复制它: var tls = require('tls'); var fs = require('fs'); var options = { host: 'foo.co.in', servername: 'foo.co.in', port: 443, key: fs.readFileSync('/etc/ssl/private/foo.key'), cert: fs.readFileSync('/etc/ssl/foo/cert.pem'), ca: [fs.readFileSync('/etc/ssl/foo/combined-ca.pem')] }; tls.connect(options, function(err) { done(err); }); 我收到一个错误: […]

节点js – SSL例程:SSL23_GET_SERVER_HELLO:未知协议:.Error

所以我使用Statusdashboard(https://github.com/obazoud/statusdashboard),它是一个简单的工具来检查网站是否启动(我知道我也可以使用Monit,但我想给节点JS一个试试这就是为什么我使用这个。) 这在设置文件中使用'http'似乎很好,但只要我尝试检查使用'https'协议的网站的状态,它会在控制台和仪表板上发出错误声明 – “SSL23_GET_SEVER_HELLO:未知协议”。 我明白,这必须做一些节点HTTPS。 只是想知道有没有人曾经遇到过这个错误。

Nodejs将服务器HTTP更改为HTTPS

我尝试将我的服务器更改为HTTPS,但无法正常工作。 我的页面显示就像我用任何东西创build一个新的服务器。 在这种情况下,我有2个文件,app.js需要express和路由,而我的server.js来执行服务器需要./app 我的app.js(服务器端): var express = require('express'); // app server var bodyParser = require('body-parser'); // parser for post requests var http = require('http'); var https = require('https'); //all endpoints is inside my app.js var app = express(); // endpoints here //code .. code with routes, code… module.exports = app; 我的server.js(服务器端): var fs = require('fs') […]

HTTP 400:ADFS HTTPS请求中的错误请求错误

我正在写一个Node.js应用程序,并试图集成一个ADFS服务器来获取身份validation。 为此,我正在使用wstrust-client ,并使用ADFS服务器URL作为我的端点。 我的代码到目前为止是: app.get('/login', function(req, res) { trustClient.requestSecurityToken({ scope: 'https://mycompany.com', username: "username", password: "password", endpoint: 'https://[adfs server]/adfs/services/trust/13/usernamemixed' }, function (rstr) { // Access the token var rawToken = rstr.token; console.log('raw: ' + rawToken); }, function(error) { console.log(error) }); }); 我通过wstrust-client请求https 我到目前为止在wstrustclient.js代码是: var req = https.request(post_options, function(res) { res.setEncoding('utf8'); res.on('data', function(data) { console.log("Entered res") var […]

SSL握手使用node.js服务器

我目前正在尝试使用socket.io创build一个安全的连接,而现在我真的无法实现这一点。 试图检查我的证书是否是权利,我试图在nodeJS中创build一个基本的https服务器。 var fs = require('fs'); var certDir = "/path/to/the/certificates/cert-test/"; require("https").createServer( { key : fs.readFileSync(certDir + 'srv.key'), cert : fs.readFileSync(certDir + 'crt.pem'), }, function(request, response){ response.writeHeader(200, {"Content-Type": "text/plain"}); response.write("Hello World!\n"); response.end(); }).listen(8082).on('clientError', function(e){ console.log(e); }); 与http相当的工作正常,但这是不可能的工作。 我把节点版本升级到了v0.12.4,npm到2.11.0,https是1.0.0(更多查询,socket.io是1.3.5)。 服务器在AWS上,有一个bitnami实例,Ubuntu 12.04.5 LTS,内核版本为3.2.0-84-virtual,OpenSSL为1.0.1i。 我尝试通过https://node.inkive.com:8082 (在我的浏览器和curl中)访问服务器,但是我从来没有得到正确的握手。 服务器检测到以下错误: [Error:3074971392:error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher:../ deps / openssl / openssl / ssl / […]

带保持活动标头的Node.js https.request

我想从用户的Facebook墙上拉post。 下面的代码片段工作,但它永远不会终止: var https = require('https'); facebookWall = function(user) { var options = { host: 'graph.facebook.com', port: 443, path: '/me/home?access_token=' + user.facebook_token + '&since=' + encodeURIComponent(user.facebook_timestamp), method: 'GET', headers: { 'Connection':'keep-alive' } }; var req = https.request(options) .on('response', function(response) { var body = ''; response.on('data', function(data) { body += data; try { var wallPosts = […]