snake-juice
TypeScript icon, indicating that this package has built-in type declarations

1.1.0 • Public • Published

snake-juice

NPM

Build Status

Overview

Generate self signed (i.e. "snake oil certs") certificates and RSA key pairs.

Install

$ npm install snake-juice --save

Dependencies

Features

  • Simple interface for generating self signed certificates.
  • Allows specifying either the commonName or a list of subjectAltNames
  • Customize the RSA key size (default 2048)
  • Customize the signature algorithm (default SHA-256)
  • Customize the duration of the certificate (default 10 years)
  • TypeScript declarations for simplified usage

Usage

Import

import { SnakeJuice } from 'snake-juice';

Returns

interface KeyAndCert {
    privateKey: string;
    publicKey: string;
    certificate: string;
    fingerprint: string;
}

Create with a common name and single subjectAltName

const keyAndCert = await SnakeJuice.generate('dummy.example.com');

Create with multiple subjectAltNames

const keyAndCert = await SnakeJuice.generate([
    'a.example.com',
    'b.example.com',
    'c.example.com',
]);

Create with multiple subjectAltNames and a custom key size

// Warning: This could take a while (>10 seconds) to run
const keyAndCert = await SnakeJuice.generate([
    'a.example.com',
    'b.example.com',
    'c.example.com',
], 4096);

Create with a lot of customized options

const keyAndCert = await SnakeJuice.generate({
    // Too small for real usage but fine for testing
    keySizeInBits: 1024,
    // Override to SHA1
    digestAlgorithm: 'sha1',
    // Custom
    validity: {
        // Override starting effective date
        notBefore: new Date('2018-01-01T12:00:00Z')
        // Override number of days that cert will be valid
        days: 1000,
    },
    // Explicit list of subjectAltNames
    subjectAltNames: [
        {
            type: SubjectAltNameType.DNS_NAME,
            value: 'a.example.com',
        },
        {
            type: SubjectAltNameType.DNS_NAME,
            value: 'b.example.com',
        },
        {
            // Can even specify non-DNS types
            type: SubjectAltNameType.IP_ADDRESS,
            value: '10.20.30.40',
        },
    ],
});

Building and Testing

To build the module run:

$ make

Then, to run the tests run:

$ make test

License

ISC. See the file LICENSE.

Credits

The real lifting is done by node-forge. Also, looking through the code for selfsigned helped out a lot as well.

Package Sidebar

Install

npm i snake-juice

Weekly Downloads

1

Version

1.1.0

License

ISC

Unpacked Size

17.7 kB

Total Files

9

Last publish

Collaborators

  • sehrope