nodejs可以生成SSL证书吗?

aya*_*ist 33 openssl node.js

我正在编写代理支持HTTPS-HTTPS代理.在我使用Python作为主要编程语言之前,我现在对node.js感兴趣,所以我准备迁移.

我面临的最大问题是我不知道如何在node.js中生成CA和其他服务器证书.在Python中,有一个很棒的pyOpenSSL.到目前为止,我在node.js中找不到类似的东西.

也许我应该使用openssl-fork方法?但是如何在openssl中处理交互操作.

谢谢.

Nic*_*ube 33

使用shell作为证书:

openssl genrsa -out server-key.pem 1024
openssl req -new -key server-key.pem -out server-csr.pem
openssl x509 -req -in server-csr.pem -signkey server-key.pem -out server-cert.pem
Run Code Online (Sandbox Code Playgroud)

然后在node.js中使用它们

var https = require('https');
https.createServer({
    key: fs.readFileSync('server-key.pem'),
    cert: fs.readFileSync('server-cert.pem')
},
function (req,res) {
      ... 
})
Run Code Online (Sandbox Code Playgroud)

编辑:

您也可以在NPM中尝试这个项目:https: //npmjs.org/package/openssl-wrapper

我发现它正在搜索NPM回购:https://npmjs.org/search?q = openssl

我自己没有尝试或检查过它,但它看起来像是一种使用节点生成证书的方法,这是原始问题.

var openssl = require('openssl-wrapper');
var password = 'github';

return openssl.exec('genrsa', {des3: true, passout: 'pass:' + password, '2048': false}, function(err, buffer) {
    console.log(buffer.toString());
});
Run Code Online (Sandbox Code Playgroud)

我会对反馈感兴趣.;)

  • 我认为将这些 shell 脚本包装在 exec 函数和 spawn 函数中并使用它而不是整个库没有坏处 (2认同)

Eri*_*nti 25

如果有人确实想从node.js以编程方式创建CSR,我创建了一个nodejs模块,它使用openssl创建私钥和CSR.

编辑:改用pem.它更完整,可能更可靠.

Edit2:实际上,pem也只是openssh上的一个简单包装器.对于纯粹的js实现,请查看forge

  • 我的模块现已完全弃用.我只是发布它,因为我不知道pem:https://www.npmjs.org/package/pem (2认同)

soc*_*air 9

node-forge允许这样做.没什么好说的.不要在内部使用openssl shell命令.

https://github.com/digitalbazaar/forge#x509