NodeJS 14:使用 SSL CA 捆绑包
NodeJS 14: Using a SSL CA Bundle
我目前正在尝试将 CA Bundle 与 NodeJS 14.0 一起使用。我一直在使用 Namecheap 的 article 作为实施此功能的指南。我目前卡在几件事上:
- 对于https.createServer()的
ca
参数,允许传入哪些文件格式?
- 如何检查 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 证书一样工作。
我目前正在尝试将 CA Bundle 与 NodeJS 14.0 一起使用。我一直在使用 Namecheap 的 article 作为实施此功能的指南。我目前卡在几件事上:
- 对于https.createServer()的
ca
参数,允许传入哪些文件格式? - 如何检查 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 证书一样工作。