Skip to content

Cannot read property 'getALPNNegotiatedProtocol' of null #24658

Description

@petoknm

Version: v11.2.0
Platform: Linux xps15 4.19.2-arch1-1-ARCH #1 SMP PREEMPT Tue Nov 13 21:16:19 UTC 2018 x86_64 GNU/Linux
Subsystem: https, tls

I am trying to get https client certificate authentication to work but I get the following error:

_tls_wrap.js:620
  this.alpnProtocol = this._handle.getALPNNegotiatedProtocol();
                                   ^

TypeError: Cannot read property 'getALPNNegotiatedProtocol' of null
    at TLSSocket._finishInit (_tls_wrap.js:620:36)
    at TLSWrap.onhandshakedone (_tls_wrap.js:101:9)

code:

const https = require('https');
const fs = require('fs');

// Some valid paths to CA files
const crtPath = process.env.CA_CERT_PATH || "/var/run/secrets/certs/ca.crt";
const keyPath = process.env.CA_CERT_KEY || "/var/run/secrets/certs/ca.key";

const options = {
  key: fs.readFileSync(keyPath),
  cert: fs.readFileSync(crtPath),
  requestCert: true,
};

https.createServer(options, (req, res) => {
  res.writeHead(200);
  res.end("hello world\n");
}).listen(8443);

when I set requestCert: false in the options it works fine, but I need the client to present a certificate, thus need the requestCert: true.

Edit:
Adding rejectUnauthorized: false makes it work. But I still think that it should not throw an error when rejecting unauthorized clients.

Metadata

Metadata

Assignees

No one assigned

    Labels

    httpsIssues and PRs related to the https subsystem.tlsIssues and PRs related to the tls subsystem.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions