生成SSL密钥以使用node.js
我正在通过GoDaddy设置SSL,以便与AWS EC2上的node.js服务器一起使用。我一直无法让它工作 以下是我尝试过的: 适用于域:files.mysite.com 在我运行的服务器上:生成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:
$ 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”要么这是非常明显的,我很慢,要么不是,可能有很多像我这样的人需要这些信息,所以我希望我能在提问和回答时都投票支持这一点。