生成 SSL 密钥以使用 node.js
Posted
技术标签:
【中文标题】生成 SSL 密钥以使用 node.js【英文标题】:Generating an SSL Key to work with node.js 【发布时间】:2012-11-07 00:52:19 【问题描述】:我正在努力通过 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 是什么? 你能帮我吗?
【问题讨论】:
这个问题也是一个答案。您的 openssl 命令适合“为 Node.js 应用程序生成 CSR” 这很明显,我很慢,或者不是,而且可能有很多像我这样的人需要这些信息,所以我希望我可以投票支持既是问题又是答案。 【参考方案1】: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);
【讨论】:
为什么 ca 周围有 [] 而其他字段没有? @RachelDRoy:阅读文档。ca
接受一系列证书,以防有多个链。例如,如果gd_bundle
本身由另一个证书签名。
尤里卡!有用!示例中的 note this part
对我的 GoDaddy SSL 证书特别有用。
由于您尝试将数组传递给ca
,因此您应该正确拆分【参考方案2】:
您应该在创建 http 服务器实例时使用 .crt
和 .key
文件。下面的 sn-p 会给你这个想法:
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);
【讨论】:
以上是关于生成 SSL 密钥以使用 node.js的主要内容,如果未能解决你的问题,请参考以下文章
在 Tomcat 中配置 SSL/TLS 以支持 HTTPS
Nginx负载均衡ssl原理生成ssl密钥对Nginx配置ssl
Nginx负载均衡 ssl原理 生成ssl密钥对 Nginx配置ssl
Nginx负载均衡 ssl原理 生成ssl密钥对 Nginx配置ssl