How to decode Certificate Sigining Request (CSR) in nodejs ?

When requesting a digital certificate from a Certificate Authority (CA), you need to create a Certificate Signing Request (CSR) that contains information about your organization and the desired certificate. A CSR is a text file that includes information about the public key, organization name, domain name, and other details required for the CA to issue a digital certificate.

In Node.js, you can use the pem module to decode a CSR and retrieve information about the certificate request. Here's a step-by-step guide on how to decode a CSR in Node.js using the pem module.

Installing the pem module

Before you can use the pem module, you need to install it using npm. Open your terminal and run the following command:

Bash
$npm install pem
Click to copy

This will install the pem module and its dependencies in your Node.js project.

Decoding a CSR using pem module

To decode a CSR in Node.js using the pem module, follow these steps:

  1. First, import the pem module:
    pem
    const pem = require("pem");
  2. Next, read the contents of the CSR file into a string variable. You can do this using the fs module or by copying and pasting the contents of the CSR into a string variable.
    csr
    const csr = "-----BEGIN CERTIFICATE REQUEST-----\n..."; // Replace with your CSR string
  3. Use the pem.readCertificateInfo() method to decode the CSR and retrieve information about the certificate request. This method takes two arguments: the CSR string and a callback function that will be called with the decoded information or an error if decoding fails.
    readCertificateInfo
    pem.readCertificateInfo(csr, (err, info) => {
    if (err) {
    console.error(err);
    } else {
    console.log(info);
    }
    });`

    The info object contains information about the certificate request, including the following fields:
    • country: The two-letter ISO country code of the organization.
    • state: The state or province of the organization.
    • locality: The locality or city of the organization.
    • organization: The name of the organization.
    • organizationUnit: The name of the organizational unit within the organization.
    • commonName: The fully qualified domain name (FQDN) of the server or website that the certificate will be used for.
    • emailAddress: The email address of the person responsible for the certificate.
  4. To access a specific field of the info object, simply use dot notation. For example, to retrieve the commonName field, use info.commonName.
    csr result
    console.log(info.commonName); // Prints the FQDN of the server or website
  5. If you want to print all the fields of the info object, simply use console.log(info).
    all fields
    console.log(info); // Prints all fields of the CSR

That's it! You have now decoded a CSR and retrieved information about the certificate request.