【问题标题】:Install Entrust SSL certificate in Node express application在 Node express 应用程序中安装 Entrust SSL 证书
【发布时间】:2015-10-19 21:05:06
【问题描述】:

我不确定如何传入给定的证书来启动 https 服务器。 Entrust 提供了以下文件:
1. 根证书。 (.txt)
2.链根证书文件。 (.txt)
3. 连锁证书。 (.txt)
4. 服务器证书。 (.crt)

我的快递应用目前占用:

exports.key1 = {
    key:'./server/config/keys/server.key', // ?
    cert:'./server/config/keys/server.crt', // ?
    ca:'./server/config/keys/ca.csr' //given to entrust to generate their cert
};

我不确定如何修改密钥以匹配新文件。

【问题讨论】:

    标签: node.js ssl express


    【解决方案1】:

    连接证书后,颁发者会提供相关说明,您需要从文件系统中读取它们并将它们提供给http.createServer() 以创建 SSL 服务器对象。来自文档:

    var https = require('https');
    var fs = require('fs');
    
    var options = {
      key: fs.readFileSync('path/to/agent-key.pem'),
      cert: fs.readFileSync('path/to/agent-cert.pem')
    };
    
    https.createServer(options, function (req, res) {
      res.writeHead(200);
      res.end("hello world\n");
    }).listen(8000);
    

    通常,您会将选项块包装在一个标志中,以检查您是处于生产还是开发阶段。对于生产,您将从安全的预定义路径读取证书,而对于开发,您可以生成这些证书并在根项目文件夹fixtures/ 中提供它们,如果更方便,您也可以将其与项目存储库一起分发.使用以下内容创建用于开发的自颁发证书:

    openssl req -batch \
        -new -x509 -sha256 -newkey rsa:2048 -nodes -days 365 \
            -keyout fixtures/dev.key \
            -out fixtures/dev.crt;
    

    【讨论】:

    • 那么...代理密钥是我的私钥吗? agent-cert 是 1 个文件,其中 1-4 项按顺序连接?我现在从 chrome 收到此错误:ERR_SSL_VERSION_OR_CIPHER_MISMATCH
    • 如果你得到一个ERR_SSL_VERSION_OR_CIPHER_MISMATCH,意味着你没有为你的密钥正确地连接文件。试试这个工具来测试你是否正确地完成了所有事情sslshopper.com/certificate-key-matcher.html
    • 似乎奏效了。谢谢!仍然获得不受信任的连接(它是真正的 ssl 证书,不是自签名的)。但我认为这是因为我在 localhost 上运行。
    • @WilliamFalcon 最有可能,因为证书绑定到域名。您需要添加localhost
    猜你喜欢
    • 1970-01-01
    • 2017-03-05
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    相关资源
    最近更新 更多