An EasyRSA wrapper to maintain a private key infrastructure using Javascript
Install Easy-RSA Wrapper with npm
npm install @darkmaper/easyrsa-wrapper
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
For default, initPki overwrite PKI folder.
await easyrsa.initPki({ force: true })
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'
})
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'
})
await easyrsa.revoke({
name: 'filename',
reason: 'unspecified',
caPassword: 'CaPassword'
})
await easyrsa.renew({
name: 'filename',
caPassword: 'CaPassword'
})
await easyrsa.genCrl('CaPassword')
ATENTION: If the CA is encrypted and not set caPassword
or is a bad password easyrsa throws a error.