给定SSL密钥和证书,如何创建HTTPS服务?

推荐答案

对于 node 0.3.4及更高版本,直到当前LTS(本次编辑时为v16),https://nodejs.org/api/https.html#httpscreateserveroptions-requestlistener具有您需要的所有示例代码:

const https = require(`https`);
const fs = require(`fs`);

const options = {
  key: fs.readFileSync(`test/fixtures/keys/agent2-key.pem`),
  cert: fs.readFileSync(`test/fixtures/keys/agent2-cert.pem`)
};

https.createServer(options, (req, res) => {
  res.writeHead(200);
  res.end(`hello world\n`);
}).listen(8000);

请注意,如果要使用Let's Encrypt’s certificates using the certbot tool,则私钥名为privkey.pem,证书名为fullchain.pem:

const certDir = `/etc/letsencrypt/live`;
const domain = `YourDomainName`;
const options = {
  key: fs.readFileSync(`${certDir}/${domain}/privkey.pem`),
  cert: fs.readFileSync(`${certDir}/${domain}/fullchain.pem`)
};

Javascript相关问答推荐

如何在alpinejs中显示dev中x-for的元素

单击按钮后未清除 Select

如何在JavaScript中在文本内容中添加新行

*ngFor和@代表输入decorator 和选角闭合

TypScript界面中的Infer React子props

使用续集和下拉栏显示模型属性

格式值未保存在redux持久切片中

如何从JSON数组添加Google Maps标记—或者如何为数组添加参数到标记构造器

使用下表中所示的值初始化一个二维数组

Promise Chain中的第二个useState不更新

如何将Openjphjs与next.js一起使用?

如何从Intl.DateTimeFormat中仅获取时区名称?

如何在使用rhandsontable生成表时扩展数字输入验证?

Angular 形式,从DOM中删除不会删除指定索引处的内容,但会删除最后一项

如何使用JS创建一个明暗功能按钮?

如何将zoom 变换应用到我的d3力有向图?

如何在JAVASCRIPT中合并两组对象并返回一些键

我的NavLink活动类在REACT-ROUTER-V6中出现问题

如何在加载页面时使锚定标记成为焦点

如何处理不带参数的redux thunk payloadCreator回调函数?