x509

Simple X509 certificate parser.

node-x509

Simple X509 certificate parser.

From NPM (recommended): npm install x.509

Building and testing from source:

sudo npm install -g node-gyp
npm install
npm test

Reading from a file:

var x509 = require('x509');
 
var issuer = x509.getIssuer(__dirname + '/certs/your.crt');

Reading from a string:

var fs = require('fs'),
    x509 = require('x509');
 
var issuer = x509.getIssuer(fs.readFileSync('./certs/your.crt').toString());

Notes:

  • cert may be a filename or a raw base64 encoded PEM string in any of these methods.

Parse certificate with x509.parseCert and return the alternate names.

var x509 = require('x509');
 
var altNames = x509.getAltNames(__dirname + '/certs/nodejitsu.com.crt');
/*
altNames = [ '*.nodejitsu.com', 'nodejitsu.com' ]
*/

Parse certificate with x509.parseCert and return the issuer.

var x509 = require('x509');
 
var issuer = x509.getIssuer(__dirname + '/certs/nodejitsu.com.crt');
/*
issuer = { countryName: 'GB',
  stateOrProvinceName: 'Greater Manchester',
  localityName: 'Salford',
  organizationName: 'COMODO CA Limited',
  commonName: 'COMODO High-Assurance Secure Server CA' }
*/

Parse certificate with x509.parseCert and return the subject.

var x509 = require('x509');
 
var subject = x509.getSubject(__dirname + '/certs/nodejitsu.com.crt');
/*
subject = { countryName: 'US',
  postalCode: '10010',
  stateOrProvinceName: 'NY',
  localityName: 'New York',
  streetAddress: '902 Broadway, 4th Floor',
  organizationName: 'Nodejitsu',
  organizationalUnitName: 'PremiumSSL Wildcard',
  commonName: '*.nodejitsu.com' }
*/

Parse subject, issuer, valid before and after date, and alternate names from certificate.

var x509 = require('x509');
 
var cert = x509.parseCert(__dirname + '/certs/nodejitsu.com.crt');
/*
cert = { subject: 
   { countryName: 'US',
     postalCode: '10010',
     stateOrProvinceName: 'NY',
     localityName: 'New York',
     streetAddress: '902 Broadway, 4th Floor',
     organizationName: 'Nodejitsu',
     organizationalUnitName: 'PremiumSSL Wildcard',
     commonName: '*.nodejitsu.com' },
  issuer: 
   { countryName: 'GB',
     stateOrProvinceName: 'Greater Manchester',
     localityName: 'Salford',
     organizationName: 'COMODO CA Limited',
     commonName: 'COMODO High-Assurance Secure Server CA' },
  notBefore: Sun Oct 28 2012 20:00:00 GMT-0400 (EDT),
  notAfter: Wed Nov 26 2014 18:59:59 GMT-0500 (EST),
  altNames: [ '*.nodejitsu.com', 'nodejitsu.com' ],
  signatureAlgorithm: 'sha1WithRSAEncryption',
  fingerPrint: 'E4:7E:24:8E:86:D2:BE:55:C0:4D:41:A1:C2:0E:06:96:56:B9:8E:EC',
  publicKey: {
    algorithm: 'rsaEncryption',
    e: '65537',
    n: '.......' } }
*/

Checking the date to make sure the certificate is active:

var x509 = require('x509'),
    cert = x509.parseCert('yourcert.crt'),
    date = new Date();
 
if (cert.notBefore > date) {
  // Certificate isn't active yet. 
}
if (cert.notAfter < date) {
  // Certificate has expired. 
}

MIT