🎉
Let's Encrypt + Node.js で HTTPS サーバ
Qiitaより転載
2018/5/14 初投稿
キーの場所を忘れてしまったので備忘録がてらに。
証明書の場所
Let's Encrypt で作成した証明書は以下にある:
/etc/letsencrypt/live/[ドメイン]/
Node.js
で HTTPS サーバを立ち上げる
https
モジュールを使用する
-
key
はprivkey.pem
-
cert
はcert.pem
const https = require("https");
const fs = require("fs");
const key = "/etc/letsencrypt/live/***/privkey.pem"
const cert = "/etc/letsencrypt/live/***/cert.pem"
const options = {
key: fs.readFileSync(key),
cert: fs.readFileSync(cert)
};
const server = https.createServer(options);
// 5001 番ポートで listen
server.listen(5001);
サンプル
適当なログサーバを書いたので丸ごと。
const https = require("https");
const fs = require("fs");
const key = "/etc/letsencrypt/live/***/privkey.pem"
const cert = "/etc/letsencrypt/live/***/cert.pem"
const options = {
key: fs.readFileSync(key),
cert: fs.readFileSync(cert)
};
const server = https.createServer(options);
server.on("request", (request, response) => {
if(request.url.includes(".ico")) return;
const dir = "./access-log/";
if (fs.existsSync(dir) === false) {
fs.mkdirSync(dir);
}
const now = new Date();
const fileName = dir + `${now.getMonth()}${now.getDate()}${now.getHours()}.txt`;
let writeMethod =
fs.existsSync(fileName) === false ? fs.writeFileSync : fs.appendFileSync;
writeMethod(fileName, `${now.toISOString()}\n`);
response.writeHead(200, {
"Content-Type": "application/json"
});
response.write(JSON.stringify({ result: "success" }));
response.end();
});
server.listen(5001);
console.log("Server running at https://localhost:5001/");
なんか実際はファイル名おかしいけど。。
Discussion