【问题标题】:Comodo SSL cert bundle installation Node.js / ExpressComodo SSL 证书捆绑安装 Node.js / Express
【发布时间】:2025-12-12 00:40:02
【问题描述】:

我刚刚从 Comodo 购买了单域 SSL 证书,并收到了以下文件:

example.com.ca-bundle

-----BEGIN CERTIFICATE-----
MIIGCDCCA/CgAwIBAgIQKy5u6tl1NmwUim7bo3yMBzANBgkqhkiG9w0BAQwFADCB
hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
lBlGGSW4gNfL1IYoakRwJiNiqZ+Gb7+6kHDSVneFeO/qJakXzlByjAA6quPbYzSf
+AZdAeKCIN2+b72z...
-----END CERTIFICATE-----  
-----BEGIN CERTIFICATE-----  
MIIFdDCCBFygAwIBAgIQJ2buVutJ846r13Ci/ITeIjANBgkqhkiG9w0BAQwFADBv
MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFk
PUsE2JSDAD3FQdso8VYFhH2+9uRv0V9dlfmrPb2LjkQLPNlzmuhbsdjrzcd3h5vR
pu/xOD8QOG3...
-----END CERTIFICATE-----

example.com.crt

-----BEGIN CERTIFICATE-----
MIIGVDCCBTygAwIBAgIQDDhlxcL1PyJpGAoMWLNvwTANBgkqhkiG9w0BAQsFADCB
wCypSjy5b3WKSdYByYwPZqKWKiqT/g3uLwD4fhWvqTQxmR9diXL1SAdZIwht47VU
7FytWidOUmY/lxVrlFDCePkWLkyAY0AN0VsocqB/16xq9LqN8FwWQg==... 

-----END CERTIFICATE-----

index.js

const privateKey = fs.readFileSync('sslcert/server.key', 'utf8');
const certificate = fs.readFileSync('sslcert/server.crt', 'utf8');

const credentials = {
  key: privateKey,
  cert: certificate,
};

const httpsServer = https.createServer(credentials, app);

example.com.ca-bundle 包含两个证书。 server.key 是什么,我用哪一个?

【问题讨论】:

    标签: node.js express ssl-certificate


    【解决方案1】:

    由于您没有提供完整的证书,我们无法确定捆绑包中的内容。但遵循良好实践,这是 CA 的中间证书或根证书(如果特定 CA 不使用中间证书)。这个想法是服务器(应用程序)需要特定 CA 链中的所有证书(从根证书开始)。我的意思是链中的所有证书

    1. CA 的根证书(通常是自签名的)
    2. 中间证书 1(由 root 签名)
    3. 中间证书 2(由中间证书 1 签名)
    4. ...等等
    5. 中间证书 n(由中间证书 n-1 签名)
    6. 您的证书(由中间证书 n 签名)

    总结一下:你应该使用整个文件作为server.crt

    server.key 是您在创建证书请求时生成的私钥。你留着吗?

    server.crtserver.key 可以是任意文件名,只要它们遵循文件系统规则、存在、包含适当的信息并在配置文件中描述

    example.com.ca-bundle 应该用作server.crt

    您生成的私钥应该用作server.key

    【讨论】:

    • 对不起,我对此完全陌生。什么是 CA?
    • @ChrisRich CA=认证机构。在你的情况下是 Comodo
    • 所以在购买证书之前在我的本地主机上,我生成了一个私钥和一个 .csr 文件(证书签名请求)。那么我从 Comodo 收到的文件有什么用途?