
Security News
Package Maintainers Call for Improvements to GitHub’s New npm Security Plan
Maintainers back GitHub’s npm security overhaul but raise concerns about CI/CD workflows, enterprise support, and token management.
Simple X509 certificate parser.
From NPM (recommended): npm install x509
Building and testing from source:
sudo npm install -g node-gyp
npm install
npm test
Reading from a file:
const x509 = require('x509');
var issuer = x509.getIssuer(__dirname + '/certs/your.crt');
Reading from a string:
const 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.cert
)Parse certificate with x509.parseCert
and return the alternate names.
const x509 = require('x509');
var altNames = x509.getAltNames(__dirname + '/certs/nodejitsu.com.crt');
/*
altNames = [ '*.nodejitsu.com', 'nodejitsu.com' ]
*/
cert
)Parse certificate with x509.parseCert
and return the issuer.
const 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' }
*/
cert
)Parse certificate with x509.parseCert
and return the subject.
const 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' }
*/
cert
)Parse subject, issuer, valid before and after date, and alternate names from certificate.
const 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: '.......' } }
*/
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('x509');
x509.verify(
__dirname + '/certs/user.com.crt',
__dirname + 'enduser-example.com.chain',
function(err, result){ /*...*/}
);
Checking the date to make sure the certificate is active:
const x509 = require('x509');
var 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
If you are suffering from hard to fix build issues, there is an alternative (pure javascript) implementation using emscripten: https://github.com/encharm/x509.js (based on node-x509, slightly different API)
FAQs
Simple X509 certificate parser.
The npm package x509 receives a total of 305 weekly downloads. As such, x509 popularity was classified as not popular.
We found that x509 demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Maintainers back GitHub’s npm security overhaul but raise concerns about CI/CD workflows, enterprise support, and token management.
Product
Socket Firewall is a free tool that blocks malicious packages at install time, giving developers proactive protection against rising supply chain attacks.
Research
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.