20

我正在努力通过 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

然后在节点中插入:

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

鉴于 GoDaddy 提供了两个 crt 文件,我不确定 server.key 或 server.crt 是什么?
你能帮我吗?

4

2 回答 2

27

GoDaddy 使用中间证书来签署您的证书。这对您和 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);
于 2012-11-19T08:50:06.077 回答
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);
于 2012-11-19T07:07:35.017 回答