/node-easyrsa-wrapper

EasyRSA Wrapper for NodeJS

Primary LanguageTypeScriptMIT LicenseMIT

Node.js CI

MIT License

Wrapper Easy-RSA

An EasyRSA wrapper to maintain a private key infrastructure using Javascript

Installation

Install Easy-RSA Wrapper with npm

  npm install @darkmaper/easyrsa-wrapper

Usage/Examples

Start using easyrsa

With RSA

import EasyRSA from '@darkmaper/easyrsa-wrapper'

const easyrsaOpts = {
    pki: 'path/for/pki',
    days: 3650,
    certDays: 850,
    digest: 'sha256',
    algo: 'rsa',
    keySize: 2048,
}

const easyrsa = new EasyRSA(easyrsaOpts)

Or with EC

import EasyRSA from '@darkmaper/easyrsa-wrapper';

const easyrsaOpts = {
    pki: 'path/for/pki',
    days: 3650,
    certDays: 850,
    digest: 'sha256',
    algo: 'ec',
    curve: 'secp112r1'
}

const easyrsa = new EasyRSA(easyrsaOpts);

See more information about Elliptic Curves

Init PKI Infraestructure

For default, initPki overwrite PKI folder.

await easyrsa.initPki({ force: true })

Generate Certificate Authority

await easyrsa.buildCa({
    commonName: 'My CA',
})

If want encrypt the private key, you can pass a password for the CA private key

await easyrsa.buildCa({
    commonName: 'My CA',
    password: 'CAPassword'
})

Generate a Certificate

Create a server

await easyrsa.createServer({
    name: 'filename',
    commonName: 'My server',
    password: 'CertPassword',
    caPassword: 'CaPassword' 
})

Create a client

await easyrsa.createClient({
    name: 'filename',
    commonName: 'My Client',
    password: 'CertPassword',
    caPassword: 'CaPassword' 
})

Revoke a Certificate

await easyrsa.revoke({
    name: 'filename',
    reason: 'unspecified',
    caPassword: 'CaPassword'
})

Renew a Certificate

await easyrsa.renew({
    name: 'filename',
    caPassword: 'CaPassword'
})

Generate a Certificate Revocation List

await easyrsa.genCrl('CaPassword')

ATENTION: If the CA is encrypted and not set caPassword or is a bad password easyrsa throws a error.

License

MIT

Authors