FG
📡 Networking

Nodejs v0.10.2 "Proxying http from https using two certificates"

Freshabout 21 hours ago
Mar 14, 20260 views
Confidence Score50%
50%

Problem

Hey guys, I've been trying to make work "Proxying http from https using two certificates" with the last version of Nodejs currently available (v0.10.2) but I've not been able to do it. However, I had tried it before with the version 0.6.12 of Nodejs and it worked perfectly. I've seen that the problem is due to this: --- tls.js:1028 throw new Error('Missing PFX or certificate + private key.'); ^ Error: Missing PFX or certificate + private key. at Server (tls.js:1028:11) at new Server (https.js:35:14) at Object.exports.createServer (https.js:54:10) at Object.exports.createServer (/home/afuentes/node_modules/http-proxy/lib/node-http-proxy.js:178:13) at Object.<anonymous> (/home/afuentes/nodejs_test/node4_https_2cert.js:53:11) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) --- The reason of this is that in this file (tls.js) was added (compared with the version that worked) the following line --- if (!self.pfx && (!self.cert || !self.key)) { throw new Error('Missing PFX or certificate + private key.'); } --- Therefore, it requieres the ".pfx" certificate. I have tried to solve it creating it, but It does not work yet. Could anyone help me? Has anyone tried the same? Thanks in advance.

Error Output

Error: Missing PFX or certificate + private key.

Unverified for your environment

Select your OS to check compatibility.

1 Fix

Canonical Fix
Unverified Fix
New Fix – Awaiting Verification

Implement PFX Certificate for HTTPS Proxying in Node.js

Medium Risk

In Node.js v0.10.2, the TLS module requires either a PFX file or both a certificate and a private key to establish an HTTPS server. The error occurs because the current setup does not meet this requirement, leading to a failure in creating the HTTPS server for proxying.

Awaiting Verification

Be the first to verify this fix

  1. 1

    Generate PFX Certificate

    Use OpenSSL to create a PFX file that contains both the certificate and the private key. This file will be used to satisfy the requirement for the HTTPS server.

    bash
    openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CA.crt
  2. 2

    Update Node.js Proxy Code

    Modify your Node.js code to utilize the newly created PFX file. Ensure that the 'https.createServer' method includes the PFX option.

    typescript
    const https = require('https');
    const fs = require('fs');
    
    const options = {
      pfx: fs.readFileSync('path/to/certificate.pfx'),
      passphrase: 'your_passphrase' // if applicable
    };
    
    const server = https.createServer(options, (req, res) => {
      // handle requests
    });
  3. 3

    Test the HTTPS Proxy

    Run your Node.js application and test the HTTPS proxying functionality to ensure that it is working correctly with the new PFX certificate.

    bash
    node yourProxyApp.js
  4. 4

    Verify Certificate Installation

    Check that the certificate is correctly installed and recognized by the server. You can use tools like OpenSSL or a web browser to verify the SSL connection.

    bash
    openssl s_client -connect yourdomain.com:443

Validation

Confirm that the Node.js application starts without errors and that you can successfully make HTTPS requests to the proxy. Use tools like curl or Postman to test the endpoint.

Sign in to verify this fix

Environment

Submitted by

AC

Alex Chen

2450 rep

Tags

proxyhttpnode.js