【问题标题】:SSL Error: CERT_UNTRUSTED on dotCloudSSL 错误:dotCloud 上的 CERT_UNTRUSTED
【发布时间】:2014-01-20 12:50:27
【问题描述】:

我在 dotCloud 上部署 Node.js 服务时看到以下错误:

23:03:59.958870: [www] npm ERR! Error: SSL Error: CERT_UNTRUSTED
23:03:59.959405: [www] npm ERR!     at ClientRequest.<anonymous> (/opt/node/v0.8.3/lib/node_modules/npm/node_modules/request/main.js:440:26)
23:03:59.959736: [www] npm ERR!     at ClientRequest.g (events.js:185:14)
23:03:59.960068: [www] npm ERR!     at ClientRequest.EventEmitter.emit (events.js:88:17)
23:03:59.960399: [www] npm ERR!     at HTTPParser.parserOnIncomingClient [as onIncoming] (http.js:1445:7)
23:03:59.968852: [www] npm ERR!     at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:111:23)
23:03:59.969361: [www] npm ERR!     at CleartextStream.socketOnData [as ondata] (http.js:1356:20)
23:03:59.969696: [www] npm ERR!     at CleartextStream.CryptoStream._push (tls.js:396:27)
23:03:59.970028: [www] npm ERR!     at SecurePair.cycle (tls.js:750:20)
23:03:59.970359: [www] npm ERR!     at EncryptedStream.CryptoStream.write (tls.js:131:13)
23:03:59.970694: [www] npm ERR!     at Socket.ondata (stream.js:38:26)
23:03:59.971012: [www] npm ERR! If you need help, you may report this log at:
23:03:59.971299: [www] npm ERR!     <http://github.com/isaacs/npm/issues>
23:03:59.971587: [www] npm ERR! or email it to:
23:03:59.971876: [www] npm ERR!     <npm-@googlegroups.com>
23:03:59.972208: [www]
23:03:59.972543: [www] npm ERR! System Linux 2.6.38.2-grsec-dotcloud-ec2
23:03:59.972852: [www] npm ERR! command "node" "/opt/node/default/bin/npm" "install"
23:03:59.973251: [www] npm ERR! cwd /home/dotcloud/rsync-1388703750593/app
23:03:59.973584: [www] npm ERR! node -v v0.8.3
23:03:59.973914: [www] npm ERR! npm -v 1.1.44
23:04:00.331100: [www] npm ERR!
23:04:00.331630: [www] npm ERR! Additional logging details can be found in:
23:04:00.331955: [www] npm ERR!     /home/dotcloud/rsync-1388703750593/app/npm-debug.log
23:04:00.332280: [www] npm ERR! not ok code 0
23:04:01.058860: [www] -- Build failed: "npm install" failed with return code 1

【问题讨论】:

    标签: node.js ssl npm dotcloud


    【解决方案1】:

    根据npm blog,首选的解决方案是像这样重新安装npm

    #!/bin/bash
    set -e
    npm install npm@">1.4.0" -g --ca=null
    

    这也适用于 dotCloud 平台。您可以将该 sn-p 用作您的prebuild.sh script,然后您的其余软件包应该可以正常安装。 @"&gt;1.4.0" 语法就是这样,一旦你安装了足够新的版本,你就不会继续不必要地更新。如果您想要更新的东西,请随时更改它。如果您始终想要最新版本的npm,请随时完全删除@"&gt;1.4.0"

    【讨论】:

      【解决方案2】:

      我发现以下SO question 似乎表明某些 npm 包可能正在使用自签名证书,从而导致错误。似乎根修复应该与包本身一起使用,使用注册的证书。但是,作为 dotCloud 的解决方法,您可以使用 pre-build hook 运行以下命令 npm config set strict-ssl false,这在我的测试中似乎有效。

      要使用这种方法,您需要执行以下操作:

      1) 将 prebuild 指令添加到您的 dotcloud.yml 文件。您的 dotcloud yml 文件可能如下所示:

      www:
          type: nodejs
          approot: app
          processes:
              app: node app.js
          config:
              node_version: v0.8.x
          prebuild: ./prebuild.sh     # <-- prebuild directive
      redis:
          type: redis
      

      2) 将 prebuild.sh 文件添加到您的应用程序根目录中。如果您不使用应用根目录,这只是您项目的根目录。

      3) 将以下内容添加到您的 prebuild.sh 文件中

      #!/bin/bash
      npm config set strict-ssl false
      

      【讨论】:

      【解决方案3】:

      要么更新你的节点/npm(首选),要么运行npm config set ca null

      他们最近在 npmjs.org 更改了证书,因为旧证书已过期,但您的 npm 已将旧证书硬编码到其中。

      PS:将 strict-ssl 设置为 false 是一个非常糟糕的主意,除非你知道自己在做什么。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-18
        • 2014-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-14
        • 1970-01-01
        相关资源
        最近更新 更多