在哪里寻找 'cert' 和 'key' 来创建 https 服务器?

Where to look for 'cert' and 'key' to create https server?

我正在尝试将我的 websocket 服务器移动到 wss,因为 github 页面需要 https 证书,为此,我需要:

const server = https.createServer({
  cert: fs.readFileSync('/path/to/cert.pem'),
  key: fs.readFileSync('/path/to/key.pem')
});
const wss = new WebSocket.Server({ server });

我的问题是:我从哪里获得这个证书和密钥? 我对 https 的工作原理一无所知,老实说,只是在这里寻求建议。 顺便说一句,我正在使用快递,所以我需要以某种方式应对它。目前服务器在localhost测试,但它通常运行在aws linux ami

您需要一个 https 证书以及 运行 任何 https 服务器的随附密钥。使用 LetsEncrypt.com to get them. The LetsEncrypt site offers instructions about that. There are tutorials on the internet about how to do it, and an npm package called Greenlock 来帮助您实现自动化。为了让 LetsEncrypt 工作,您需要能够证明您控制了相关域,方法是在您的 DNS 或网站的 http 版本中放置一些秘密令牌字符串。

或者,如果您为一个已经拥有 public 网络服务器证书的组织工作,您可以要求 运行 该服务器的人从任何证书中为您购买证书您的组织使用的权限。

当您将一台机器连接到 运行 任何类型的基于节点的 https 服务器时,您通常会在某处创建一个目录来保存您的秘密。你的证书和私钥就是这样的秘密。

您可以为此使用一个名为 /usr/local/secrets 的目录,并将您的证书和密钥文件放在那里。它也适用于存储各种 API 密钥和服务器所需的其他秘密内容的文件。

所以你的代码会说

const server = https.createServer({
  cert: fs.readFileSync('/usr/local/secrets/cert.pem'),
  key: fs.readFileSync('/usr/local/secrets/key.pem')
});
const wss = new WebSocket.Server({ server });

不要将您的秘密提交给 git 或任何其他源代码控制系统。始终将它们放在应用程序的目录层次结构之外。或者他们不会保密。您真的不希望您的 https 证书和密钥在 intertoobz 周围浮动。