Tag: ssl

net :: ERR_INSECURE_RESPONSE Angular 2 + Node.js + Socket.io

我正在开发一个与Angular 2,Node.js和socket.io的Web应用程序。 它与http完美地工作,但是我想实现https协议,我打了墙。 我得到NET :: ERR_INSECURE_RESPONSE从angular度到我的网页api的任何http调用,也试图build立一个套接字连接。 这是我做的: 1)生成我的私钥和csr。 2)使用该csr从Comodo申请SSL证书。 3)从Comodo收到2个文件: – domain.ca-bundle – domain.crt 4)我将这两个文件和我的私钥复制到一个文件夹:/ etc / apache2 / ssl / 5)我修改了etc / apache2 / sites-default中的default-ssl.conf来指向这些文件: SSLCertificateFile /etc/apache2/ssl/domain.crt SSLCertificateKeyFile /etc/apache2/ssl/mypriv.key SSLCertificateChainFile /etc/apache2/ssl/domain.ca-bundle 再加上: ServerName domain.io ServerAlias www.domain.io 6)启用https并重新启动apache。 如果我的证书设置正确, 请使用SSL分析器( https://sslanalyzer.comodoca.com/ )进行validation。 它确认现在连接到我的网站是安全的,所以我认为这部分是正确的,现在我需要修复应用程序和服务器来处理https。 7)这是如何创buildangular度的套接字连接: this.socket = io.connect('https://server_ip' + ':3000', { rejectUnauthorized:false}); 这个会在晚些时候给我net :: ERR_INSECURE_RESPONSE 8)Angular应用程序也在向服务器发送http请求,如下所示: […]

节点v7.9.0的ERR_SSL_VERSION_OR_CIPHER_MISMATCH https

此代码在节点v7.9.0(Electron当前使用的版本)中创build一个https服务器,并在端口8000上侦听: require('https').createServer( {}, (req, res) => { res.writeHead(200); res.end('hello world/n'); } ).listen(8000); 不幸的是,当我访问https:// localhost:8000在服务器运行时,我得到了ERR_SSL_VERSION_OR_CIPHER_MISMATCH。 我怎样才能通过这个错误? 如何找出哪些服务器可用的密码以及它正在使用的协议(希望是最新版本的TLS)? 编辑这个错误也发生在节点v8.5.0,在编写时最新的稳定版本的节点

Javascript的http服务器:ERR_CONNECTION_REFUSED

我最近试图安装一个SSL证书到我的服务器。 证书文件(privkey.pem,fullchain.pem)位于应用程序的根目录中。 当我运行下面的代码: var express = require('express'); var app = express(); var helmet = require('helmet'); var db = require('./server/database.js'); var fs = require('fs'); var ssl = require('ssl-root-cas'); 'use strict'; var rootCas = require('ssl-root-cas/latest').create(); // default for all https requests // (whether using https directly, request, or another module) require('https').globalAgent.options.ca = rootCas; app.use(helmet()); var options = […]

使用nodeJS检查其他域SSL证书

我需要检查给定的域是否有一个有效的SSL证书使用NodeJS,所以我使用https模块是这样的: const https = require('https'); const options = { host: 'www.some-site.com', method: 'get', path: '/' }; const req = https.request(options, res => { console.log('Certificate Status: ', res.socket.authorized); }); req.on('error', error => { console.error('Error: ', error); }); req.end(); 我一直在对一些列在Google透明度报告中的网站进行testing: https : //transparencyreport.google.com/https/top-sites 一些结果: aliexpress.com – Certificate Status: true正确 expired.badssl.com – Certificate Status: false正确 两者都正确。 但是,当一个站点没有使用SSL时, socket.authorized所有值仍然是正确的: […]

节点8中的SSL与节点7

我有一个场景使用HTTPS与这个片段作为服务器: // (NodeJS) import * as https from "https"; this.server = https.createServer({ cert: this.cert, key: this.privKey, requestCert: true, }, (request, response) => { … } 使用版本Node 7.10.1 ,我可以使用Java 1.8.0_131 64 bit连接,提供客户端证书。 但是,如果我升级到Node 8.7.0 ,我可以使用该片段的唯一方法是将requestCert更改为false。 否则,Java代码会抛出一个exception: 远程主机在Web服务通信期间握手期间closures连接 在TLS(SSL)方面,节点7和节点8之间是否有任何突破?

如何连接节点的amqplib与SSL连接?

我试图连接我的RabbitMQ服务器,它被迫使用SSL,并用用户和密码保护。 以前,我成功地从C#,PHP和Python应用程序连接到此服务器。 这是我的node.js代码: const amqp = require('amqplib'); const fs = require('fs'); const config = {…} const opts = { ca: [fs.readFileSync(config.certificatePath)] }; const url = `amqps://${config.username}:${config.password}@${config.hostname}:${config.port}`; const open = amqp.connect(url, opts); open.then(function(conn) { console.log('connected.'); }).then(null, console.warn); 我得到的错误是:无法获得本地发行者证书 1)错误是什么意思? 2)我需要做什么才能连接? 注意:在图书馆的ssl指南中写着“(必须)提供一个选项对象,它将被传递给tls.connect() 。 我无法理解这个指令,也没有tls.connect()使用的例子。 我尝试了一些变化,但失败了,也许会给这里的某个人提供线索。

nodejs tls会话ID

我正在使用TLS使用node.js库创build会话。 Node.js是否提供了一种检索build立的TLS连接的会话ID的方法。 它是openssl中的SSL ctx的一部分。 可以不使用connect,express或geddy来完成吗?

Node.js – 在运行时dynamic更改HTTPS服务器的SSL证书

我正在build立一个HTTPS代理node 。 基本上,我允许用户为我的代理服务器设置一个DNS CNAME别名,并将他们的SSL证书导入到我的应用程序中(例如AWS Elastic Load Balancer),以便他们的CNAME主机名得到适当的保护,每一个请求都被客户认可。 现在我正在代理端工作,我试图find一种方法来在与客户端的SSL握手之前dynamic地加载正确的证书。 工作stream程是: 服务器收到新的请求 获取客户端请求的主机名(即用户设置的DNS CNAME别名) 加载属于该主机名的正确证书 在当前请求中使用加载的证书 (需要帮助) 握手(加载的证书 – 因请求而异) 有没有办法做到这一点?

我如何在节点中将套接字升级到TLS?

我试图写一个FTP服务器在支持TLS明确的AUTH的节点。 在这种模式下,客户端发送一个AUTH TLS命令给服务器,服务器响应一个确认,提示客户端开始协商安全连接。 我使用这个代码来升级连接: https : //github.com/andris9/rai/blob/master/lib/starttls.js 。 我已经通过使用net.Server编写了一个简单的echo服务器,然后使用starttls函数来立即将套接字升级到一个安全的连接来validation。 使用openssl s_client连接到此testing服务器按预期工作。 但是,当我尝试使用支持具有显式authentication的TLS的FTP客户端连接到我的testingFTP服务器时,以下exception由createSecurePair返回的对象引发: [Error: 140735236446560:error:1408A0B7:SSL routines:SSL3_GET_CLIENT_HELLO:no ciphers specified:../deps/openssl/openssl/ssl/s3_srvr.c:1009: ] 实际上,我已经指定了密码( createSecurePair传递了一个options字典,其ciphers设置为'RC4-SHA:AES128-SHA:AES256-SHA')。 我已经用数据包嗅探了连接,而且似乎发生的事情是服务器响应客户端的AUTH TLS命令后,客户端和服务器之间有一个简短的交换,我认为这是(失败的)TLS协商。 但是我对TLS进一步调查还不够了解。 我应该如何去调查这个错误的来源? 我正在运行节点0.8.1,和0.6.19有相同的问题。

通过代理访问NPM存储库

我正尝试使用代理从Intranet访问npm存储库。 使用代理(在环境variablesHTTP_Proxy和HTTPS_Proxy中设置)我能够访问存储库而不使用ssl使用我的浏览器,并使用wget: wget registry.npmjs.org/yuidocjs 当我使用https时,我可以使用浏览器访问,但不能使用wget wget https://registry.npm.js.org/yuidocjs #fails 当我尝试使用NPM时,将registry=http://registry.npm.js.org/设置为404。 当我使用默认的httpsregistrypath时,会导致超时。 我在这里错过的任何东西? 我的configuration文件如下所示: proxy = http://ems-lnx222:8080/proxy.pac https-proxy = http://ems-lnx222:8080/proxy.pac registry = http://registry.npmjs.org/ prefix = /ws/bemccorm-rtp/npm-packages strict-ssl = false 更新 经过更多的游戏,我发现.pac代理似乎是造成了一个问题。 我用一个普通的代理,而现在得到一个200的状态,获取正确的tgz文件,然后收到一个npm ERR! fetch failed 尝试获取文件时npm ERR! fetch failed 。