Nginxのようなリバースプロキシを使用せずにLetsencryptを使用しようとしていますが、という名前のモジュールが見つかりました.npmに(greenlock-express)しかし、私はそれを働かせることはできません。ノード:httpとhttpsノードサーバを使用しているときに、encrypt-expressモジュールが動作しない
実施例:
var express = require('express')
var letsencript = require('greenlock-express')
var leclg = require('le-challenge-fs')
var lestore = require('le-store-certbot')
var http = require('http');
var https = require('https');
var redHttps = require('redirect-https')
var app = express();
app.get('/', (req, res) => {
res.send('Ok Working');
})
var lex = letsencript.create({
server: 'staging',
// agreeTos: true,
approveDomains: (opts, certs, cb) => {
if (certs) {
// change domain list here
opts.domains = ['10hd.in']
} else {
// change default email to accept agreement
opts.email = '[email protected]',
opts.agreeTos = true;
}
cb(null, { options: opts, certs: certs });
},
// app: app,
// challenges: { 'http-01': leclg.create({ webrootPath: '/tmp/acme-challenges' }) },
// store: lestore.create({ webrootPath: '/tmp/acme-challenges' })
}).listen(80, 443);
上の例は期待通りに働いています。 httpをhttpsにリダイレクトし、Letsencript stagging serverから証明書を発行します。 〜/ letsencriptフォルダに格納します。
これは私がしたいものですが、動作しません。
var express = require('express')
var letsencript = require('greenlock-express')
var leclg = require('le-challenge-fs')
var lestore = require('le-store-certbot')
var http = require('http');
var https = require('https');
var redHttps = require('redirect-https')
var app = express();
app.get('/', (req, res) => {
res.send('Ok Working');
})
var lex = letsencript.create({
server: 'staging',
// agreeTos: true,
approveDomains: (opts, certs, cb) => {
if (certs) {
// change domain list here
opts.domains = ['10hd.in']
} else {
// change default email to accept agreement
opts.email = '[email protected]',
opts.agreeTos = true;
}
cb(null, { options: opts, certs: certs });
},
// app: app,
// challenges: { 'http-01': leclg.create({ webrootPath: '/tmp/acme-challenges' }) },
// store: lestore.create({ webrootPath: '/tmp/acme-challenges' })
})
// .listen(80, 443);
const middlewareWrapper = lex.middleware;
// redHttps()
http.createServer(lex.middleware(redHttps())).listen(80,()=> {
console.log("Listening for ACME http-01 challenges");
});
//
https.createServer(
lex.httpsOptions,
lex.middleware(app)
).listen(433,() => {
console.log("Listening for ACME tls-sni-01 challenges and serve app");
});
私は、HTTPSノードモジュールを介してサーバーにサービスを提供したいです。 .listen()関数で提供されているコールバックで何かしたい。 しかし、ホームディレクトリ内のフォルダを暗号化するように作成することさえできません。
コンソール出力:
[email protected]:~/test$ sudo node app.js
le.challenges[tls-sni-01].loopback should be defined as function (opts, domain, token, cb) { ... } and should prove (by external means) that the ACME server challenge 'tls-sni-01' will succeed
Listening for ACME http-01 challenges
Listening for ACME tls-sni-01 challenges and serve app