Articles of ssl

如何创buildnodejs ssl服务器?

nodejs版本:0.8.6 我使用openssl创build了一个ssl csr文件,命令如下:openssl req -nodes -newkey rsa:2048 -keyout myserver.key -out myserver.csr csr内容被发送到我的SSL提供商,证书被发回。 现在我想创build一个SSL安全的服务器: var fs = require("fs"); var https = require('https'); var credentials = { key: fs.readFileSync(options.base_project_folder + 'privatekey.pem'), cert: fs.readFileSync(options.base_project_folder + 'certificate.pem') }; var server = https.createServer(credentials, app); server.listen(port, address, function() { var addr = this.address(); console.log('listening on %s:%d', addr.address, addr.port); }); 服务器正在运行,但我得到:“SSL连接错误” 试图检查我所做的问题:openssl […]

在可以处理多个安全域的NodeJS中创build一个反向代理

我正在尝试在NodeJS中创build一个反向代理。 但我一直在运行的问题是,即使我想为多个域服务,我也只能在同一个端口(443)上提供一套authentication/密钥对。 我已经做了研究,并继续跑到同一个路段: 可以服务多个域的节点脚本从非安全的本地源(http本地访问和服务https公共) 让我dynamic服务器SSL证书通过域标头 例: https://www.someplace.com:443将从http:// thisipaddress:8000中获取并使用www.someplace.com的证书和密钥文件 https://www.anotherplace.com:443将从http:// thisipaddress:8080中提取,并使用www.anotherplace.com的证书和密钥文件 等。 我看过使用NodeJS的https.createServer(options,[requestListener]) 但是这个方法每个端口只支持一个证书/密钥对 我找不到根据域标头dynamic切换证书的方法 我不能要求我的人使用自定义的https端口 如果我为多个域名提供相同的SSL证书,即使它是安全的,我也会碰到浏览SSL证书错误 我看着node-http-proxy,但据我所见,它有相同的限制 我查看了Apache的mod-proxy和nginx,但我宁愿有一些我可以直接控制的东西 如果任何人都可以向我展示一个使用NodeJS和https.createServer或node-http-proxy从同一端口号(443)提供多个安全域的示例,那么我将对此感激不尽。

通过Mongoose.js连接到使用SSL和mongos的Compose.io MongoDB部署

我正在使用compose.io来托pipetesting和生产mongodb数据库,并试图使用mongoose.js(使用标准nodejs mongodb驱动程序)通过节点应用程序进行连接。 我的连接选项如下: var connectionString = 'mongodb://user:password@host1:port1,host2:port2/dbname?ssl=true'; var options = { mongos: true, server: { ssl: true, sslValidate: true, sslCA: [fs.readFileSync('/path/to/cert/certificate.pem')] // cert from compose.io dashboard } } mongoose.createConnection(connectionString, options); 虽然这个连接似乎悬而未决。 我没有收到服务器的错误,也没有收到“公开”事件。

如何访问OpenShift通配符SSL证书和私钥

在OpenShift网站上: https ://help.openshift.com/hc/en-us/articles/202535440-How-do-I-get-SSL-for-my-domains-,它陈述 You can always take advantage of our *.rhcloud.com wildcard certificate in order to securely connect to any application via it's original, OpenShift-provided hostname URL. 但是,Node的HTTPS服务器需要指向证书和私钥的文件path才能使用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(); var httpsServer […]

如何修复在nodejs中缺less中间/链式证书

我已经在我的服务器上安装了nodejs和ssl 和我的app.js代码 var sslOptions = { key: fs.readFileSync('/etc/ssl/private/private.key'), cert: fs.readFileSync('/etc/ssl/certs/cert.com.crt'), requestCert: true, ca: fs.readFileSync('/etc/ssl/certs/ca.crt'), rejectUnauthorized: false }; var secureServer = https.createServer(sslOptions,app).listen(443, function(){ console.log("Express server listening on port "); }); 现在当我检查 https://www.sslshopper.com/ 它给我错误 所有Web浏览器都不信任该证书。 您可能需要安装中间体/链式证书才能将其链接到受信任的根证书。 详细了解这个错误。 您可以通过遵循适用于您的服务器平台的Comodo证书安装说明来解决此问题(使用InstantSSL的这些说明)。 注意关于中间证书的部分。 任何想法 ? 如何解决这个问题

使用Node.js通过SSL连接到MongoDB

如何使用Node.js通过SSL连接到MongoDB服务器? 我已经阅读了一些驱动程序( mongojs , mongodb-native )的源代码,我一直在使用googlesearch,但似乎找不到任何适当的教程,指南或文档。

保护Socket.io

我正在使用一个基于Node.js的https服务器,使用HTTP Basic进行身份validation(数据通过SSLencryption连接发送,这很好)。 现在我想提供一个应该是的Socket.io连接 encryption和 仅限经过身份validation的用户。 问题是如何做到这一点。 我已经发现,在连接到套接字时,我需要在客户端JavaScript代码中指定{ secure: true } ,但是如何在服务器端强制套接字连接只能通过SSL运行,而且它只能工作对于经过authentication的用户? 我认为SSL是简单的部分,因为Socket.io服务器只绑定到https服务器,所以它应该只使用SSL运行,并且不应该通过(另外)运行的http服务器运行它, 对? 关于另一件事,我没有丝毫的想法确保只有当用户使用HTTP Basic成功validation后才能build立套接字连接。 有任何想法吗?

在node.js中使用socket.io设置服务器 – 服务器SSL通信

我试图通过ssl连接使用socket.iobuild立服务器到服务器的链接。 这是我的例子: /** * Server */ var app = require('express')(); var config = require('./config'); var https = require('https'); var http = require('http'); var fs = require('fs'); var server = https.createServer({key: fs.readFileSync(config.ssl.key), cert: fs.readFileSync(config.ssl.cert), passphrase: config.ssl.passphrase}, app); //var server = http.createServer(app); var io = require('socket.io').listen(server); server.listen(config.port); app.get('/', function (req, res) { res.send('Server'); //res.sendfile(__dirname + '/index.html'); }); […]

jquery ajax https调用给出ERR_INSECURE_RESPONSE

我正在尝试从jquery到node.js进程进行https CORS ajax调用。 但是,当任何时候在控制台OPTIONS https://localhost/ net::ERR_INSECURE_RESPONSE进行调用chrome抱怨。 看一个类似的堆栈溢出的问题, 跨域请求从HTTP到HTTPS立即中止我应该能够使跨越来源https ajax调用,如果我导入自我签署的证书我作出。 所以我把这个证书导入了chrome。 我可以在权限下的chromepipe理证书选项卡中看到证书。 但是当我尝试ajax调用时它仍然失败。 这是我的私钥: openssl genrsa -out domain.key 4096 现在cert: openssl req -x509 -sha512 -nodes -newkey rsa:4096 -keyout domain.key -out domain.crt 对于通用名称,我把电脑的IP地址,以便铬不会抱怨URL不匹配。 这是html页面。 <!DOCTYPE html> <html> <title>BlackBox</title> <head> <meta charset="utf-8"> <script src="jquery-1.11.2.min.js"></script> <script src="bootstrap-3.3.4-dist/js/bootstrap.min.js"></script> <script src="login.js"></script> </head> <body> <div class="container-fluid"> <div class="row"> <div class=col-md-4> <h2> Welcome […]

axios:通过代理https请求

我正在尝试使用代理服务器的axios进行https呼叫: const url = "https://walmart.com/ip/50676589" var config = { proxy: { host: proxy.ip, port: proxy.port } } axios.get(url, config) .then(result => {}) .catch(error => {console.log(error)}) 我使用的代理服务器在美国都是非常匿名的,支持HTTP和HTTPS。 我收到这个错误: {错误:写EPROTO 140736580649920:错误:140770FC:SSL例程:SSL23_GET_SERVER_HELLO:未知协议:../ deps / openssl / openssl / ssl / s23_clnt.c:794: 为了确保问题是与axios而不是代理,我试过这个: curl -x 52.8.172.72:4444 -L'https://www.walmart.com/ip/50676589' 这完全正常工作。 我如何configurationaxios以使用代理和https URL?