生成SSL密钥以使用node.js

生成SSL密钥以使用node.js,node.js,ssl,openssl,Node.js,Ssl,Openssl,我正在通过GoDaddy设置SSL,以便与AWS EC2上的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 然后我得到CSR:

我正在通过GoDaddy设置SSL,以便与AWS EC2上的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
然后我得到CSR:vim files.mysite.CSR

我从以下位置复制和粘贴:

-----BEGIN CERTIFICATE-----
......... lots of stuff
-----END CERTIFICATE-----
最后有一个额外的空行,我留下它并使用rekey粘贴到GoDaddy接口中

然后我下载godaddy密钥,该密钥提供:

gd_bundle.crt
files.mysite.com.crt
然后在节点I中插入:

key: fs.readFileSync('server.key').toString(),
cert: fs.readFileSync('server.crt').toString()
我不确定server.key或server.crt是什么,因为GoDaddy提供了两个crt文件?

你能帮忙吗

在创建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);

GoDaddy使用中间证书来签署您的证书。这对你和戈达迪都有几个好处。但它需要更多的工作才能工作(只是一点点,主要是谷歌搜索)

在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);
require('https')。createServer({
key:fs.readFileSync('files.mysite.com.key'),
证书:fs.readFileSync('files.mysite.com.crt'),

ca:[fs.readFileSync('gd_bundle.crt')]//为什么有[]围绕ca而不是其他字段?@RachelDRoy:阅读文档。
ca
接受一个证书数组,以防有多个链。例如,如果
gdu bundle
本身由另一个证书签名。真是太棒了!这个例子中的
注意这部分对我的GoDaddy特别有用SSL证书。由于您正试图将数组传递给
ca
,因此应正确拆分此问题也是一个答案。您的openssl命令适用于“为Node.js应用程序生成CSR”要么这是非常明显的,我很慢,要么不是,可能有很多像我这样的人需要这些信息,所以我希望我能在提问和回答时都投票支持这一点。