A greenlock keypair and certificate storage strategy with wildcard support for MySQL, Postgres, SQLite3, and Microsoft SQL Server
Go to file
Ryan Burnette f5fe01edaf readme 2019-04-10 14:17:15 +00:00
db configure db 2019-04-10 14:11:38 +00:00
.gitignore initial build 2019-04-08 13:01:22 +00:00
LICENSE initial build 2019-04-08 13:01:22 +00:00
README.md readme 2019-04-10 14:17:15 +00:00
convert-wildcard.js initial build 2019-04-08 13:01:22 +00:00
le-store-sequelize.js initial build 2019-04-08 13:01:22 +00:00
make-safe-sha-str.js initial build 2019-04-08 13:01:22 +00:00
merge-options.js initial build 2019-04-08 13:01:22 +00:00
package-lock.json initial build 2019-04-08 13:01:22 +00:00
package.json initial build 2019-04-08 13:01:22 +00:00
sync.js initial build 2019-04-08 13:01:22 +00:00

README.md

le-store-sequelize

A database-driven Greenlock storage plugin with wildcard support.

Usage

To use, provide this Greenlock storage plugin as the store attribute when you invoke create.

var store = require('le-store-sequelize');

var gl = greenlock.create({
  store,
  approveDomains,
  ...
});

Wildcards & AltNames

Working with wildcards and multiple altnames requires Greenlock >= v2.7.

To do so you must set opts.subject and opts.domains within the approvedomains() callback.

subject refers to "the subject of the ssl certificate" as opposed to domain which indicates "the domain servername used in the current request". For single-domain certificates they're always the same, but for multiple-domain certificates subject must be the name no matter what domain is receiving a request. subject is used as part of the name of the file storage path where the certificate will be saved (or retrieved).

domains should be the list of "altnames" on the certificate, which should include the subject.

Example

function approveDomains() {
}

Configuration

Defaults

No configuration is required. By default, you'll get a baked-in Sequelize database running sqlite3.

greenlock.create({
  store: require('le-store-sequelize'),
  ...
});

Database Connection

Without config.dbOptions, the baked-in sequelize object uses sqlite3 with default options. If config.dbOptions is provided, you can configure the database connection per the Sequelize documentation.

var store = require('le-store-sequelize')({
  dbConfig: {
    username: 'mysqluser',
    password: 'mysqlpassword',
    database: 'mysqldatabase,
    host: '127.0.0.1',
    dialect: 'mysql'
  }
});

greenlock.create({
  store,
  ...
});

The database can also be configured using an env variable.

var store = require('le-store-sequelize')({
  dbConfig: {
    use_env_variable: 'DB_URL'
  }
});

Custom Database Object

You can pass in your own database object if you wish. It doesn't actually even have to be a Sequelize database object, as long as the object responds to the implemented methods and returns the expected results.

var db = new MyDatabase();

var store = require('le-store-sequelize')({
  db
});

greenlock.create({
  store,
  ...
});