Node People Magic

    le-challenge-hooks

    2.0.0 • Public • Published

    le-challenge-hooks

    A strategy for node-letsencrypt that uses hooks to configure a webserver to meet tls-sni-01 or tls-sni-02 challenges.

    Install

    npm install --save le-challenge-hooks@2.x

    Usage

    var leChallenge = require('le-challenge-hooks').create({
      debug: false // default
    , hooksPath: path.join('~''letsencrypt''hooks') // default
    , hooksServer: "apache2-debian"
    , hooksTemplate: "/path/to/config-file-template"
    , hooksBind: "*" // default
    , hooksPort: "443" // default
    , hooksWebroot: "/var/www" // default, though nothing should actually be served
    , hooksPreEnable: "/bin/true" // validate {{{conf}}} prior to enabling if necessary
    , hooksEnable: "ln -s {{{conf}}} /etc/apache2/sites-enabled"
    , hooksPreReload: "apache2ctl configtest"
    , hooksReload: "/etc/init.d/apache2 reload"
    , hooksDisable: "rm /etc/apache2/sites-enabled/{{{token}}}.conf"
    });
     
    var LE = require('letsencrypt');
     
    LE.create({
      server: LE.stagingServerUrl
    , challengeType: "tls-sni-01"
    , challenge: leChallenge
    });

    Either hooksServer or hooksTemplate must be provided. Some options default to the values given above as marked.

    The hooksServer option sets defaults for all the options below it to suit a particular server/distro. The defaults can still be overridden by providing values. Servers available so far include (contributions for additional servers welcome):

    • apache2-debian

    If providing your own shell hooks or configuration file template, note that the following substitutions are available:

    • {{{token}}}: the token
    • {{{domain}}}: the domain for which a certificate is being sought (beware of this if using multiple domains per certificate)
    • {{{subject}}}: the domain for which the generated challenge-fulfilling certificate must be used (only available when generating it)
    • {{{cert}}}: the path to the generated certificate: hooksPath/token.crt
    • {{{privkey}}}: the path to the generated private key: hooksPath/token.key
    • {{{conf}}}: the path to the generated config file: hooksPath/token.conf
    • {{{bind}}}: the value of the hooksBind option
    • {{{port}}}: the value of the hooksPort option
    • {{{webroot}}}: the value of the hooksWebroot option

    Exposed Methods

    For ACME Challenge:

    • set(opts, domain, key, val, done)
    • get(defaults, domain, key, done)
    • remove(defaults, domain, key, done)

    For node-letsencrypt internals:

    • getOptions() returns the internal defaults merged with the user-supplied options

    Install

    npm i le-challenge-hooks

    DownloadsWeekly Downloads

    5

    Version

    2.0.0

    License

    (MIT OR Apache-2.0)

    Last publish

    Collaborators

    • insightfuls