Tag: ssl

添加force-ssl包到Meteor项目已经使用appcache

我有一个Meteor项目,它使用appcache包在浏览器中保存Meteor应用程序的caching。 现在我已经购买了SSL证书,并希望开始强制用户连接到该网站的https://地址。 所以我添加了force-ssl包。 但是,当用户访问http://example.com Meteor应用程序的caching版本时,它将获取caching更新通知,并尝试开始下载新版本的应用程序。 所以http://站点现在正在尝试从https://站点请求资源,并且由于CORS问题,浏览器阻止了这些资源。 我已经玩了一下force-ssl包,甚至尝试设置一些头文件: var host = url.parse(Meteor.absoluteUrl()).hostname; res.setHeader('access-control-allow-origin', 'http://' + host); res.setHeader('access-control-allow-credentials', 'true'); res.setHeader('access-control-allow-methods', 'POST, GET, OPTIONS'); 但是我仍然看到像这样的CORS错误: GET https://www.example.com/sockjs/881/y6to3ysz/xhr 405 (Method Not Allowed) 任何人都知道如何正确设置标题,以便更新可以通过https://到http://网站? 我正在设置socksjs头文件等下拉兔子洞,并认为可能有人已经这样做,可能会节省我一些时间。

将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都需要客户端证书。

NodeJS – 带有websocket传输的SSL上的SocketIO

我有一个NodeJS-socketIO服务器,客户端从JS,PHP和Python中侦听。 当通过简单的HTTP / WS通道进行通信时,它就像一个魅力。 现在,当我尝试确保这个通信,websocket传输不再工作。 它返回到xhr-polling(长轮询)运输。 Xhr轮询仍然适用于JS客户端,但不是纯粹依赖于套接字传输的python。 我试过的东西: 在节点上,使用https (使用商业证书)而不是http – 适用于通过节点提供页面,但不适用于socketIO 通过HAProxy代理(1.15-dev19) 。 从HTTPS(HAProxy)到HTTP(节点)。 无法让WebSocket传输工作,它回落到 JS上的xhr-polling 。 Python握手时获得502 。 代理通过STunnel (用于HTTPS) – > HAProxy(Websocket代理) – >节点(SocketIO) – 这也不工作。 Python客户端仍然握手502。 代理通过Stunnel(HTTPS) – >节点(SocketIO) – 这也不工作。 不确定STunnel是否支持websocket代理 node-http-proxy :在websocket上抛出500( 发生错误:{“code”:“ECONNRESET”} ),并返回到xhr-polling 我确定它是一个常见的用例,并且存在一个解决scheme。 真的很感激任何帮助。 提前致谢!

无法validation第一个证书

我有一个包含证书包,Python脚本和Node脚本的目录。 这两个脚本都向相同的URL发出GET请求,并提供相同的证书包。 Python脚本按预期发出请求,但节点脚本会引发此错误: {[错误:无法validation第一个证书]代码:'UNABLE_TO_VERIFY_LEAF_SIGNATURE'} Python脚本(Python 3.4.3和请求库) : import requests print(requests.get(url, verify='/tmp/cert/cacert.pem')) 节点脚本(节点4.2.6和请求库) : var fs = require('fs'); var request = require('request'); request.get({ url: url, agentOptions: { ca: fs.readFileSync('/tmp/cert/cacert.pem') } }, function (error, response, body) { if (error) { console.log(error); } else { console.log(body); } }); 两者都使用相同的OpenSSL版本: $ python -c 'import ssl; print(ssl.OPENSSL_VERSION)' OpenSSL 1.0.2e-fips 3 […]

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); }); 我收到一个错误: […]

如何在ELB内部设置SSL,并与ELB外部的节点实例进行通信

我已经使用ELB之外的ELB,自动调节,RDS和一个节点ec2实例在AWS上创build了架构(希望它不应该是错误的)。 现在我没有得到,那我怎么能在这个架构上实现SSL。 让我简单解释一下: 我创build了一个经典的负载平衡器。 在自动缩放组上创build。 将实例分配给自动调整组。 最后,我创build了一个我正在使用的节点实例,这个负载平衡器和自动调整组是不在这个范围之内的。 现在,当我将SSL实现到负载均衡器时,内部实例正在与HTTP请求上的节点实例进行通信,并且由于节点实例位于负载平衡器之外,因此请求被阻止。 有人可以帮我实施这个架构的SSL。 对不起,如果你与我的架构混淆,如果有任何其他最好的架构可能,那么请让我知道我可以改变我的架构。 谢谢,

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

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

Node.js + SSL支持

最近的提交参考了TLS的进展。 任何想法什么时候会准备好? 如果没有,现在有什么使用SSL与节点应用程序的选项? 反向代理nginx? 有没有一个好的教程可用于与节点使用SSL? 现在大多数专业应用程序都需要支持SSL,现在能够使用这些节点是非常好的。

为什么Node.js只接受SAN中的证书IP地址,而不是CN?

正如我在答复 主机名/ IP时指出的, 与证书的名称不匹配,当请求的主机名被指定为证书的公用名称(CN)时,Node.js会成功validation主机名上的TLS证书。 Request : localhost Common Name: localhost => Success 现在,当我尝试使用相同的IP地址时,validation失败: Request : 192.168.178.31 Common Name: 192.168.178.31 => Fail 只有当我指定IP地址作为主题备用名称(SAN)时才有效: Request : 192.168.178.31 Common Name : 192.168.178.31 Subject Alternative Name: 192.168.178.31 => Success 正如创build证书时作为主机名(CN)的IP地址 答案中所述? (HTTPS主机名错误:应该是<ipAddress>) , 不build议在证书中使用IP地址[…]。 作为替代scheme,在解决SSL证书服务器名称的方式/我可以使用keytool添加替代名称的答案中build议使用? 将IP地址添加为SAN(这反过来在Node.js中工作)。 现在我的问题是: 不build议不意味着错误或禁止 。 除了不build议 Node.js不支持CN中的IP地址,或者为什么它会是一个风险(安全,无论…),还有什么特别的原因吗?