NodeJS 14:使用 SSL CA 捆绑包

NodeJS 14: Using a SSL CA Bundle

我目前正在尝试将 CA Bundle 与 NodeJS 14.0 一起使用。我一直在使用 Namecheap 的 article 作为实施此功能的指南。我目前卡在几件事上:

  1. 对于https.createServer()的ca参数,允许传入哪些文件格式?
  2. 如何检查 CA 包是否实际被使用?

https.createServer()的ca参数,允许传入哪些文件格式?

来自NodeJS tls.createSecureContext

Any string or Buffer can contain multiple PEM CAs concatenated together

虽然,一般 NodeJS 使用 PEM 格式。

如何检查 CA 包是否实际被使用?

您可以使用未经您的 CA 签名的证书,例如自签名证书。

一点,可能比你想要的更微妙:nodejs tls.createSecureContext 内部调用 OpenSSL PEM_read_bio_X509_AUX 它实际上接受 三种 PEM 格式 (或任何序列这三种格式,因为 nodejs 循环)。对于其中两个,base64/64cpl blob 包含(确切地)一个 X.509 证书,如 rfc7468 sec 5, with either preferred label "CERTIFICATE" or deprecated label "X509 CERTIFICATE". In addition OpenSSL accepts a format of its own with label "TRUSTED CERTIFICATE" where the blob contains an X.509 certificate plus additional (ASN.1) data defined by OpenSSL; see e.g. the man page for d2i_X509_AUX online here 中重新指定的那样。 OpenSSL 很少使用这些额外的数据,当然也没有其他任何东西使用它,所以很少见。

并且为了避免混淆可能值得注意的是 所有 OpenSSL PEM_read_ 例程,包括这个例程,在搜索PEM 数据,所以实际上 file/buffer 包含垃圾,然后是 PEM 证书,然后是更多垃圾,然后是另一个 PEM 证书,等等。将像只包含 PEM 证书一样工作。