2012-11-19 51 views
17

我通过GoDaddy的合作,以建立一个SSL与我的node.js在AWS EC2服务器使用工作。我一直无法让它工作。生成一个SSL密钥与node.js的

这是我已经试过:

意域:files.mysite.com

在服务器上我运行:

$ openssl req -new -newkey rsa:2048 -nodes -keyout files.mysite.key -out files.mysite.csr 

Common Name: files.mysite.com 
password: left empty 

然后我得到了企业社会责任: vim files.mysite.csr

我复制并粘贴来自:

-----BEGIN CERTIFICATE----- 
......... lots of stuff 
-----END CERTIFICATE----- 

有在最后一个额外的空行,这是我用钥离开并粘贴到GoDaddy的接口。

我再下载GoDaddy的关键其中规定:

gd_bundle.crt 
files.mysite.com.crt 

然后在节点我插入:

key: fs.readFileSync('server.key').toString(), 
cert: fs.readFileSync('server.crt').toString() 

我不知道因为什么server.key是或server.crt这GoDaddy的提供两个crt文件?
你能帮忙吗?

+3

这个问题也是回答。你的openssl命令适合于“为Node.js应用程序生成一个CSR”。或者这是非常明显的,我很慢或不是,并且可能有很多像我这样的人需要这些信息,所以我希望我可以为此赞成无论是问题还是答案。 – rainabba

回答

25

GoDaddy的使用一个intermidiate证书签署您的证书。这对你和GoDaddy都有好处。但是它需要更多的工作来实现它的功能(只是一点点,大部分都是Google搜索)。

在Node.js的,你可以像这样安装:

require('https').createServer({ 
    key: fs.readFileSync('files.mysite.com.key'), 
    cert: fs.readFileSync('files.mysite.com.crt'), 
    ca: [fs.readFileSync('gd_bundle.crt')] // <----- note this part 
}, app).listen(443); 
+2

如何生成.key? –

+1

好点的链束。 –

+0

你为什么[]围绕ca而不是其他领域? –

3

你应该在创建你的HTTP服务器实例的使用.crt.key文件。下面的代码片段会给你的想法:

require('https').createServer({ 
    key: fs.readFileSync('/path/to/something.key'), 
    cert: fs.readFileSync('/path/to/something.crt'), 
}, app).listen(443); 

如果你有你的密钥的密码,你虽然可以通过它如下:

require('https').createServer({ 
    key: fs.readFileSync('/path/to/something.key'), 
    cert: fs.readFileSync('/path/to/something.crt'), 
    passphrase: 'your_secret_passpahrase' 
}, app).listen(443);