Tag: openssl

node-rsa和openssl的兼容性

我有一套公钥/私钥,当使用encryption和解密两种方式中的一种对一些数据进行encryption/解密时,它是完美无瑕的。 我仍然没有试图用两者之一encryption数据,并用另一个解密。 示例schenario: a)我使用下面的node.js代码使用公钥创build一些encryption的数据: #!/usr/bin/env node var NodeRSA = require('node-rsa'); var fs = require('fs'); function createUsingPubKey(Pub, data) { var pk = new NodeRSA(); pk.importKey(Pub); encrypted = pk.encrypt(data, 'base64'); return encrypted; } var sampledata = "SECRET STUFF"; var genkey = createUsingPubKey(fs.readFileSync('id_rsa.pub'), sampledata) console.log(genkey); b)然后我尝试使用openssl实用程序解密它: node test.js | openssl base64 -d -A | openssl rsautl -inkey id_rsa […]

PKCS7在Node.js中encryption解密

我在当前项目中使用pkcs7encryption解密。 我想从PHP更改为Node.js。 Node.js中是否有pkcs7encryption/解密? 在PHP中, <?php $data = <<<EOD Hello world EOD; // load key $key = file_get_contents("mypublickey.crt"); // save message to file $fp = fopen("msg.txt", "w"); fwrite($fp, $data); fclose($fp); // encrypt it if (openssl_pkcs7_encrypt("msg.txt", "enc.txt", $key,array())) { // message encrypted – send it! } ?> 解密 <?php // The certification stuff $public = file_get_contents("mypublickey.crt"); $private […]

OpenSSL PHP到JavaScript(节点)

我正在转换encryption脚本从PHP到JavaScript,正在挣扎… node.js密码文档如下: crypto.createCipheriv(algorithm, key, iv) 使用给定的algorithm,密钥和iv创build并返回一个密码对象。 PHP openssl-encrypt文档 : string openssl_encrypt ( string $data , string $method , string $password [, bool $raw_output = false [, string $iv = "" ]] ) PHP使用密码和和iv 。 当没有使用 IV时节点只使用密码 ,否则你必须提供密钥和iv 。 当我同时使用密码和iv时,如何将我的PHP函数转换为节点。 我也不清楚究竟是什么关键代表…节点文档指出, 密钥和四是计算,如果只有一个密码提供..这是什么PHP? 如果是这样,当我提供一个密码和一个iv时,它会做什么? 它使用密码作为密钥吗?

当openssl命令行执行时,Node.jsvalidation函数不validation签名

我正在尝试使用Node.jsencryption模块来validation某些数据的签名。 我正在使用Node.js 0.8.0。 文件中的数据已经使用MD5algorithm进行哈希处理,并使用专用RSA密钥进行签名,并将签名保存到单独的文件中。 这一切都是使用Java库完成的。 如果我使用openssl来validation签名,这是成功的,使用: openssl dgst -verify mykey.pem -signature example.sig hello.txt 它以“ Verified OK响应。 如果我更改hello.txt的单个字符,它不validation。 我可以添加一个-MD5参数到上面的命令,它仍然工作,但我认为这是默认的,但如果我说-MD4或-SHA它不validation。 这很好。 如果我然后尝试使用包装openssl的节点encryption模块,我不能得到此validation工作。 我的示例代码是: var crypto = require("crypto"); var fs = require("fs"); var data = fs.readFileSync("./hello.txt"); var pubkey = fs.readFileSync("./mykey.pem", "utf8"); var signature = fs.readFileSync("./example.sig"); var verifier = crypto.createVerify ('RSA-MD5'); verifier.update (data); var success = verifier.verify (pubkey, signature); […]

无法使用密钥对validationNode.js Crypto的签名

我在nodejs中有一个非常小的代码,在其中我签署了一个string,然后尝试使用openssl生成的节点密码和密钥对来validation它。 无论我尝试什么,结果总是“假”,签名无法validation。 生成公钥/私钥对: openssl genrsa -out rsa_1024_priv.pem 1024 openssl rsa -in rsa_1024_priv.pem -out rsa_1024_pub.pem -outform PEM -pubout 结果键是(我不在意让他们公开): —–BEGIN RSA PRIVATE KEY—– MIICXQIBAAKBgQDCtTEic76GBqUetJ1XXrrWZcxd8vJr2raWRqBjbGpSzLqa3YLv VxVeK49iSlI+5uLX/2WFJdhKAWoqO+03oH4TDSupolzZrwMFSylxGwR5jPmoNHDM S3nnzUkBtdr3NCfq1C34fQV0iUGdlPtJaiiTBQPMt4KUcQ1TaazB8TzhqwIDAQAB AoGAM8WeBP0lwdluelWoKJ0lrPBwgOKilw8W0aqB5y3ir5WEYL1ZnW5YXivS+l2s tNELrEdapSbE9hieNBCvKMViABQXj4DRw5Dgpfz6Hc8XIzoEl68DtxL313EyouZD jOiOGWW5UTBatLh05Fa5rh0FbZn8GsHrA6nhz4Fg2zGzpyECQQDi8rN6qhjEk5If +fOBT+kjHZ/SLrH6OIeAJ+RYstjOfS0bWiM9Wvrhtr7DZkIUA5JNsmeANUGlCrQ2 cBJU2cJJAkEA26HyehCmnCkCjit7s8g3MdT0ys5WvrAFO6z3+kCbCAsGS+34EgnF yz8dDdfUYP410R5+9Cs/RkYesqindsvEUwJBALCmQVXFeKnqQ99n60ZIMSwILxKn Dhm6Tp5Obssryt5PSQD1VGC5pHZ0jGAEBIMXlJWtvCprScFxZ3zIFzy8kyECQQDB lUhHVo3DblIWRTVPDNW5Ul5AswW6JSM3qgkXxgHfYPg3zJOuMnbn4cUWAnnq06VT oHF9fPDUW9GK3yRbjNaJAkAB2Al6yY0KUhYLtWoEpQ40HlATbhNel2cn5WNs6Y5F 2hedvWdhS/zLzbtbSlOegp00d2/7IBghAfjAc3DE9DZw —–END RSA PRIVATE KEY—– —–BEGIN PUBLIC KEY—– MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCtTEic76GBqUetJ1XXrrWZcxd 8vJr2raWRqBjbGpSzLqa3YLvVxVeK49iSlI+5uLX/2WFJdhKAWoqO+03oH4TDSup olzZrwMFSylxGwR5jPmoNHDMS3nnzUkBtdr3NCfq1C34fQV0iUGdlPtJaiiTBQPM t4KUcQ1TaazB8TzhqwIDAQAB —–END PUBLIC KEY—– 那么,这是我的节点代码: var crypto = require('crypto'); var […]

无法使用node-xmpp连接到xmpp服务器

我正在努力让node-xmpp与我们在这里的jabber服务器一起工作。 我能够使用talk.google.com工作得很好,我可以使用adium或ichat连接到我们的内部服务器。 节点v0.6.14 CentOS 6.2 / 2.6.32 node-xmpp 0.3.2 OpenSSL 1.0.0 连接代码 var j = new xmpp.Client({ jid : 'user@domain', password : 'pass', host : 'chat.domain' }); 在跟踪代码之后,似乎在尝试将连接升级到安全连接之后就会卡住。 这发生在starttls函数的starttls.js中 。 这个pair.on('secure')事件永远不会被调用,即使在settimeout之后我打印出一对,它仍然不会被授权。 在这一点上,我没有看到任何数据。 经过很长时间的坐在那里(几个微小)它打印出一个这样的错误 throw arguments[1]; // Unhandled 'error' event ^ Error: 139644497663968:error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error:s23_clnt.c:674: at CleartextStream._pusher (tls.js:508:24) at CleartextStream._push (tls.js:334:25) at SecurePair.cycle (tls.js:734:20) […]

无法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 […]

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访问OpenSSL的不同方法

我正在寻找一种将OpenSSL和Node.js集成一段时间的方法。 我的目标是: 我想成为平台独立的,因此一个解决scheme应该在OS X,Linux和Windows上工作。 我想避免不必要的磁盘操作。 例如,私钥可能不在文件中,而是在数据库中(可能是一个愚蠢的例子,但让我们认为这是一个有效的要求)。 我想支持创build密钥,csrs,签署csrs,创buildca证书,…所有证书的东西,从头到尾。 现在我考虑的选项是: 使用集成在Node.js中的OpenSSL库 不幸的是,encryption模块不提供证书的东西。 使用外部模块使用OpenSSL库。 不幸的是,我不知道该怎么做,可能是因为在C / C ++中缺less知识。 使用OpenSSL二进制作为subprocess。 鉴于OpenSSL可用,这应该适用于所有平台。 这不是很好,但它的作品。 问题1:正如我写的,我没有丝毫的想法直接访问与Node.js捆绑在一起的OpenSSL库。 我将如何处理这个? 目前,我坚持使用二进制作为一个subprocess。 不幸的是,这要求所有的东西,比如私人密钥等都是作为文件给出的(我明确想要避免的),或者我使用/ dev / stdin(这在Windows上不起作用)交出所有的东西。 问题2:我怎么处理这个问题? 第一个解决scheme也能解决这个问题吗?

与crypto.createSign一起使用密码保护的私钥

我正在尝试使用node.jsencryptionAPI和一个密码保护的私钥来签署和validation消息,它使我了解到: > var sig = crypto.createSign('RSA-SHA256').update('psst').sign(pk,'hex'); Enter PEM pass phrase: 在这一点上节点就locking了。 我似乎无法find一个选项来以编程方式传递密码。