Tag: openssl

如何从密码访问bignumberfunction?

前段时间我研究了embedded在OpenSSL中的大数字function(例如,通过#include <openssl/bn.h> ),我想在节点中使用它。 据我了解,OpenSSL通过encryption库模块公开,但我不知道如何访问它,虽然 – 我认为 – 它应该是可用的。 至less,它出现在github 。 任何提示可用?

为Node.js编译本地C ++模块,链接到openSSL / libcrypto失败

我正在使用Cygwin / Windows,我正在尝试为node.js构build本地模块。 我打算使用OpenSSL库。 我已经从Cygwin软件包pipe理器安装了openssl。 我的.cc文件中有以下几行: #include <openssl/dh.h> 和 DH* public_dh_key = DH_new(); 但是当我尝试链接/编译它与node-waf configure build ,我得到: undefined reference to _DH_new 编辑: 构build脚本的一部分: def build(bld): ppp= bld.new_task_gen('cxx', 'shlib', 'node_addon') ppp.cxxflags = ["-g", "-D_FILE_OFFSET_BITS=64", "-D_LARGEFILE_SOURCE", "-Wall", "-L/usr/lib", "-lssl"] … (我已经尝试添加-lcrypto,但仍得到相同的结果,我也尝试了各种组合“-lssl32”,“ – lssleay32”,“ – llibeay32”。) 编辑 构build脚本的输出: $ node-waf configure build Checking for program g++ or c++ […]

Express和SSL使用

我已经购买了一个Comodo SSL证书来制作SSL服务器。 我有这些文件。 AddTrustExternalCARoot.crt COMODORSAAddTrustCA.crt COMODORSADomainValidationSecureServerCA.crt mysite.com.key mysite.com.csr mysite_com.crt 根据很多文件,我需要.pem文件。 但是没有人在说什么.pem文件? var options = { key: fs.readFileSync('/key.pem'), cert: fs.readFileSync('/cert.pem'), ca: fs.readFileSync('/ca.pem') }; 如果有教程,这将是非常棒的。

强制node.js使用OpenSSL的非发布副本

是否有可能使Node.js使用我自己编译的本地OpenSSL版本? 我可以用环境variables或其他方式设置吗? 我必须使用较旧的Node.js版本,但使用自己编译的OpenSSL版本。 node -pe process.versions 告诉我,Node.js正在使用较旧的OpenSSL库。

无法在Express中设置HTTPS服务器

我试图设置我的express应用程序使用https 。 这是我到目前为止: var fs = require('fs'); var http = require('http'); var https = require('https'); var app = require('./app'); var port = process.env.PORT || 8080; var credentials = { key: fs.readFileSync('./ssl/private_key.pem', 'utf8'), cert: fs.readFileSync('./ssl/certificate.pem', 'utf8'), ca: [ fs.readFileSync('./ssl/certificate_chain_1.pem', 'utf8'), fs.readFileSync('./ssl/certificate_chain_2.pem', 'utf8') ] }; https.createServer(credentials, app, function (req, res) { res.writeHead(200); res.end('HTTPS server started on port […]

Node.js中OpenSSL base64 enc的等价物(openssl enc -base64 -d -A)?

有一个我正在使用的API返回的数据是gunzipped和双Base64编码。 我试过在NPM中使用几个Base64库无济于事。 由于输出编码错误,执行每个库的等效decodeBase64(decodeBase64(something))总是失败。 这个工作在shell中: something | openssl enc -base64 -d -A | openssl enc -base64 -d -A | gunzip something | openssl enc -base64 -d -A | openssl enc -base64 -d -A | gunzip something | openssl enc -base64 -d -A | openssl enc -base64 -d -A | gunzip 。 我本质上是寻找一个Node.js方法,其行为与something | openssl enc -base64 […]

Node.js函数使用Open SSL生成RSA密钥

我使用Node.js作为服务器端语言,我想为任何在我的网站上注册的用户生成一个RSA密钥对。 我正在使用一个称为密钥对的模块。 对于小尺寸的密钥来说,它工作的很好,但是当我生成大小为2048的密钥时,需要很长的时间来执行它,所以我想使用Node的child_process直接从Node.js使用Open SSL,如下面的脚本所述: var cp = require('child_process') , assert = require('assert'); var privateKey, publicKey; publicKey = ''; cp.exec('openssl genrsa 2048', function(err, stdout, stderr) { assert.ok(!err); privateKey = stdout; console.log(privateKey); makepub = cp.spawn('openssl', ['rsa', '-pubout']); makepub.on('exit', function(code) { assert.equal(code, 0); console.log(publicKey); }); makepub.stdout.on('data', function(data) { publicKey += data; }); makepub.stdout.setEncoding('ascii'); makepub.stdin.write(privateKey); makepub.stdin.end(); }); 这是工作和密钥对生成比Node.js密钥对模块更快,所以我遇到的问题是,我不明白这个代码(如果它正在写服务器端的文件,并从他们的阅读键? ),我想把这个脚本转换成一个返回一个JSON或一个数组作为结果的函数来保存公钥和私钥。 […]

无法获得发卡行证书/无法获取本地发卡行证书

我有一个要求,我的节点js REST服务需要通过HTTPS消耗。 为了启用HTTPS,我们需要有3个参数 – 一个密钥文件,一个证书文件和ca文件。 为了使用这个服务,我们需要只有ca文件。 我使用Open SSL创build了一组新的自签名证书,并且能够使用我的服务。 现在,对于生产部署,我们不能使用自签名证书。 因此,从证书颁发机构收到了一个密钥文件,证书文件和ca文件。 与我使用的自签名证书不同,证书颁发机构的ca文件包含2个CA cers – 一个根CA和一个CA. 在尝试使用此CA文件来使用HTTPS服务时,我始终得到错误消息:无法获取颁发者证书/无法获取本地颁发者证书。 使用OpenSSL命令,我validation了密钥和证书文件 – 两者完全匹配的模数。 此外,当我试图检查证书是否使用CA文件发出时,我得到相同的错误。 而与自签名的证书,我收到了好回应。 任何帮助,将不胜感激。 提前致谢。

Nodejs请求一个带有.p12证书的Web服务

所以,标题非常简单。 我想从一家公司使用Web服务,并且获得了.cer和.p12文件。 据说,在提出请求时我应该使用.p12。 我已经将.cer导入Windows,并且可以轻松地向邮递员发送请求。 但是当我试图用node.js做请求时,我得到错误。 这里是代码,我正在使用request模块: var headersOpt = { "content-type": "application/json", }; var options = { url: 'https://some-url/api', cert: fs.readFileSync(__dirname + '/certs/myCert.p12'), headers: headersOpt }; request.get(options, (error, response, body) => { console.log(error); console.log(response); console.log(body); }); 我得到这个错误: { Error: error:0906D06C:PEM routines:PEM_read_bio:no start line at Object.createSecureContext (_tls_common.js:89:17) at Object.exports.connect (_tls_wrap.js:1048:48) at Agent.createConnection (https.js:111:22) at Agent.createSocket (_http_agent.js:224:26) […]

使用非对称密码保护文件

我知道非对称密码是如何工作的。 我知道有两个键(一个私人和一个公共)。 当有人想要沟通时,他们使用这些公钥来交换他们的公钥encryption消息,然后相应的消息只能由拥有私钥的用户解密。 现在,我正在使用Node.js,我需要做这样的事情… 我需要一个应用程序,每个小时读取一个数据库,提取数据并将其保存到一个文件,我需要发送到另一台服务器。 我的问题是,我不希望该文件将被其他人看到,我使用SSH传输,所以没有问题,但我必须encryption该文件,因为我不是该服务器的pipe理员所以也许有人可以读它。 不幸的是,两台服务器的pipe理员都是一样的。 所以我的想法是用公钥encryption文件,然后只有拥有私钥的人才能解密。 我认为这是毫无意义的使用像这样的东西: var key = 'blablabla' 如果我使用公钥,没有问题,所有人都可以阅读……确实是公开的。 但是用这个公钥,没有人可以解密这个消息,所以就像单向encryption一样。 现在,有人可以告诉我是否需要签名者/validation者来完成这项工作,或者我可能需要使用openssl生成两个密钥(public / private),并将这些密钥传递给密码/ dechiper? 我在看密码模块,但没有例子….