2012-03-01 165 views
21

我正在编写代理支持HTTPS-HTTPS代理。在我使用Python作为主要编程语言之前,我现在对node.js感兴趣,所以我准备迁移。nodejs可以生成SSL证书吗?

我现在面临的最大问题是,我不知道如何生成node.js中CA和其他服务器证书在Python中,pyOpenSSL非常棒。直到现在,我在node.js中找不到类似的东西。

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

谢谢。

回答

16

如果有人确实想要通过node.js编程创建CSR,我有created a nodejs module,它使用openssl创建私钥和CSR。

编辑:使用pem代替。它更完整,可能更可靠。

EDIT2:其实,PEM也刚刚超过openssh的一个简单的包装。对于纯JS实现,看看forge

+1

它可以处理CSR请求签署正确的证书吗? – ayanamist 2013-03-24 13:16:10

+2

我的模块现在完全不推荐使用。我只是发布它,因为我不知道pem:https://www.npmjs.org/package/pem – 2014-04-27 03:05:34

+0

pem只是产生openssl。 – andrewrk 2014-08-18 00:49:10

28

证书用途外壳:

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 

然后在node.js中使用它们

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

编辑:

你也可以试用一下这个项目在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()); 
}); 

我想通过反馈感兴趣。 ;)

5

节点锻允许的。没什么可说的。不要在内部使用openssl shell命令。

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

+0

这个很棒。最重要的是,它不依赖于“open-ssl” – 2016-01-06 05:30:31

+0

我也将它用于生产代码,它的作用就像一个魅力。 – Joppe 2017-06-17 12:31:14