【发布时间】:2018-06-30 20:33:56
【问题描述】:
我正在寻找一种 node.js 方法来验证 X509 格式的客户端证书和给我的 CA 证书(这些都不是我创建/管理的,我的软件只需要验证发送的内容给它)。
我已经为这项工作找到了几个模块,但是每个模块都有问题:
-
X509 可以使用
x509.verify(cert, CABundlePath, cb)来做到这一点,但是它需要从 FS 读取证书,并且我已经将它们保存在内存中。这很麻烦,因为每个到达我的应用程序的网络请求都会这样做。 - 似乎PKI.js 能够做到这一点,但是他们的示例对我不起作用,但抱怨缺少文件,所以我什至无法尝试。
- 我尝试了 node-forge,但我不确定我是否正确使用它(他们没有任何 API 文档),但它从
forge.pki.verifyCertificateChain(caStore, [ cer ], cb)引发了forge.pki.BadCertificate错误。 - 尝试pem 时,使用简单的
pem.verifySigningChain(cer, [ ca ], cb)会引发一些错误,抱怨从/var/...加载文件。即使它可以工作,我也会避免使用这个库,因为它依赖于 openssl 命令行工具,我想避免这种情况
现在我觉得自己很愚蠢,因为我无法使用上述任何模块完成这个简单的任务。有人能指出一个简单的解决方案,它允许我使用给定的 CA 证书验证 X509 证书的签名/有效性吗? :s
[edit] 基本上我需要Node.js 中的openssl verify -verbose -CAfile ca-crt.pem client1-crt.pem 但没有 依赖于openssl 命令行工具并且没有 em> 暂时将证书保存到磁盘。
[edit2] 可以只使用https://nodejs.org/api/crypto.html#crypto_verify_verify_object_signature_signatureformat吗?
【问题讨论】:
-
这是一个写得很好的问题。谢谢。
标签: node.js ssl certificate verification ca