Simple way to retrieve SSL certificate using HTTP ACME challenge. By default, Let's Encrypt Authority is used.
Install with npm:
npm install --save letssl
const express = require('express');
const https = require('https');
const { getCertificate } = require('letssl');
async function startServer() {
const [key, cert] = await getCertificate({ commonName: 'example.com' });
const app = express();
app.get('/', (req, res) => {
res.end('Using SSL');
});
const server = https.createServer({ key, cert }, app).listen(443);
}
startServer();
There are three ways how certificate obtaining process could be tested.
When you don't need to test real domain you can set the provider
option to
selfSigned
:
const [key, cert] = await getCertificate({
commonName: 'example.localhost',
provider: 'selfSigned',
});
When debugLevel
is set and no directoryUrl
provider,
https://acme-staging-v02.api.letsencrypt.org/directory is used as directoryUrl
const [key, cert] = await getCertificate({ commonName: 'stage.example.com', debugLevel: 1, // when > 0 and no directoryUrl, });
If you need to run tests frequently, you can use Pebble, a small ACME test server. See the e2e test for example.
-
acme-client ACME client used under the hood
-
node-simple-cert Similar library