使用Node.js从SSL证书中读取失效日期和通用名称

Gol*_*den 5 ssl ssl-certificate node.js

在启用了https的Node.js中,我将证书作为.pem文件。

现在,我想从该文件中读取一些数据,以获取有关证书的信息,例如证书的到期日期和通用名称。

如我所见,Node自己的tls模块ursa之类的模块都不支持此功能。

当然,我可以将其openssl称为子进程并解析其输出流(我认为使用OpenSSL应该可以完成此任务),但是我更喜欢一种解决方案,而不依赖于路径中外部程序的可用性。

我该怎么办?

更新:同时,我找到了pem模块readCertificateInfo即使使用Node.js 0.8.18,它也成功提供了通用名称(这与它的文档中指出不支持0.7+的文档相反)。不幸的是,它不返回到期日期。

更新2:在内部,pem仅openssl使用子进程调用该命令。当然,我可以自己完成此操作,因此我可以openssl直接从中检索所需的信息。无论如何,如果有人有更好的主意(在这种情况下,这意味着纯JavaScript / Node.js解决方案),我会很高兴的:-)

Gol*_*den 4

同时我找到了答案:PEM 格式基本上是使用 Base64 加密的 ASN.1。

因此,您需要先进行Base64解码,然后将结果解析为ASN.1。结果是证书的数据结构,其中包含适当的值。

就是这样 :-)!

  • @Golo Roden:只是旁注:base64 是一种编码(它可以将字节表示为文本),而不是加密(base64 不提供任何保密性)。 (2认同)