I am looking for a node.js way to verify a client certificate in X509 format with a CA certificate which was given to me (none of those are created/managed by me, my software only has to verify what is beeing sent to it).
I have found several modules for this job, however I am having issues with each of them:
- X509 is able to do it using
x509.verify(cert, CABundlePath, cb)
, however it needs to read the certificates from FS, and I am having them in memory already. This is cumbersome as it will be done with each web request which reaches my app. - It seems like PKI.js is able to do it, however their examples don't work for me but complain about missing files, so I can't even try it out.
- I tried node-forge, but while I am unsure if I use it correctly (they don't have any API documentation) its throwing a
forge.pki.BadCertificate
error fromforge.pki.verifyCertificateChain(caStore, [ cer ], cb)
. - When trying pem, using a simple
pem.verifySigningChain(cer, [ ca ], cb)
would throw some error complaining about loading a file from/var/...
. Even if it would work, I would avoid using this lib as its relying on the openssl command line tool, which I would like to avoid
Now I feel pretty stupid because I failed to get this simple task done with any of the above modules. Could someone point me to a simple solution which will allow me to verify the signature/validity of a X509 certificate using a given CA certificate? :s
[edit] Basically I would need openssl verify -verbose -CAfile ca-crt.pem client1-crt.pem
in Node.js
but without dependencies to the openssl command line tool and without temporarily saving the certs to disk.
[edit2] Would it be possible to just use https://nodejs.org/api/crypto.html#crypto_verify_verify_object_signature_signatureformat?