【问题标题】:How does getting a SSL certificate relates to my Node.js application?获取 SSL 证书与我的 Node.js 应用程序有何关系?
【发布时间】:2012-05-06 04:17:19
【问题描述】:

我的 Linode 服务器上运行了一个 Node.js 应用程序,我的服务器需要 SSL。

我知道我需要购买一台,如下所示:http://www.namecheap.com/ssl-certificates/comodo/essential-ssl-certificate.aspx

我知道我需要获得一个专用 IP 地址并按照以下说明操作:http://library.linode.com/security/ssl-certificates/commercial

我不明白我的 Node 应用程序如何知道这个 SSL 证书?我的 Node 应用程序关心吗?

【问题讨论】:

    标签: security node.js ssl linode


    【解决方案1】:

    您的服务器需要配置证书(及其私钥),因为它向用户证明了自己的身份。在 TLS 握手期间,HTTPS 连接开始时,服务器证书会呈现给浏览器。

    这只会影响服务器本身的配置。服务器提供的实际应用程序代码不需要知道它(并且可能不应该,以减少通过错误代码泄露私钥的风险)。

    【讨论】:

    • 我 99% 同意这一点,但是如果您允许应用程序在 http 或 https 上运行,它至少需要知道请求通过哪个协议进入,以便正确的基本协议可以在模板和响应中生成链接等时使用。
    • 您可以使用协议相对 URL 来避免需要动态执行此操作。与“//stackoverflow.com”类似的 url 将自动使用与当前页面相同的协议。不过,在某些情况下,您仍希望确保访问者仅通过 https 访问某些“页面”(例如登录页面)。
    • @Kitsune,这与协议相关的 URL 完全无关。使用此类 URL 不会使服务器侦听端口 443 或将其配置为通过 HTTPS 提供页面。这不会靠魔法发生。
    • @Bruno,我指的是 Ryan LaBarre 的评论(应该添加 @-name,但它让我忘记了),特别是关于“在模板中生成链接”,而不是您的原始帖子。很抱歉造成混乱!
    • @Kitsune,对不起,我读得太快了。这当然是有道理的。
    【解决方案2】:

    你应该运行一个 https 服务器。

    如果您正在运行 expressjs,您可以执行以下操作 - 使用您从 ssl 提供商处获得的证书和密钥。

    var express = require('express')
      , fs = require("fs");
    
    var privateKey = fs.readFileSync('security/privatekey.pem').toString();
    var certificate = fs.readFileSync('security/certificate.pem').toString();  
    
    // to enable https
    var app = module.exports = express.createServer({key: privateKey, cert: certificate});
    

    希望对您有所帮助。

    编辑:

    你可以看看这个link - 这家伙正在使用标准的节点服务器实现而不是表达。但是我不确定安全 api 是否发生了变化——这篇文章已经有将近 2 年的历史了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多