node-x509
![Build Status](https://travis-ci.com/ghaiklor/node-x509.svg?branch=master)
Simple X509 certificate parser.
This fork provides a compatibility with Node.js versions later than 10.
The original library seems like stopped being supported.
Installation
From NPM (recommended):
npm install @ghaiklor/x509
Building and testing from source:
npm install
npm test
Usage
Reading from a file:
const x509 = require('@ghaiklor/x509');
const issuer = x509.getIssuer(__dirname + '/certs/your.crt');
Reading from a string:
const fs = require('fs');
const x509 = require('@ghaiklor/x509');
const issuer = x509.getIssuer(fs.readFileSync('./certs/your.crt').toString());
Methods
Notes:
cert
may be a filename or a raw base64 encoded PEM string in any of these methods.
x509.getAltNames(cert
)
Parse certificate with x509.parseCert
and return the alternate names.
const x509 = require('@ghaiklor/x509');
const altNames = x509.getAltNames(__dirname + '/certs/nodejitsu.com.crt');
x509.getIssuer(cert
)
Parse certificate with x509.parseCert
and return the issuer.
const x509 = require('@ghaiklor/x509');
const issuer = x509.getIssuer(__dirname + '/certs/nodejitsu.com.crt');
x509.getSubject(cert
)
Parse certificate with x509.parseCert
and return the subject.
const x509 = require('@ghaiklor/x509');
const subject = x509.getSubject(__dirname + '/certs/nodejitsu.com.crt');
x509.parseCert(cert
)
Parse subject, issuer, valid before and after date, and alternate names from certificate.
const x509 = require('@ghaiklor/x509');
const cert = x509.parseCert(__dirname + '/certs/nodejitsu.com.crt');
x509.verify(cert
, CABundlePath
, function(err, result){ /.../})
Performs basic certificate validation against a bundle of ca certificates.
It accepts an error-first callback as first argument.
If the error is null, then the certificate is valid.
The error messages are the same returned by openssl
: x509_verify_cert_error_string
Note:
As now, this function only accepts absolute paths to existing files as arguments.
const x509 = require('@ghaiklor/x509');
x509.verify(
__dirname + '/certs/user.com.crt',
__dirname + 'end-user-example.com.chain',
function(err, result) { }
);
Examples
Checking the date to make sure the certificate is active:
const x509 = require('@ghaiklor/x509');
const cert = x509.parseCert('your_cert.crt');
const date = new Date();
if (cert.notBefore > date) {
}
if (cert.notAfter < date) {
}
License
MIT