繁体   English   中英

SSL错误:dotCloud上的CERT_UNTRUSTED

[英]SSL Error: CERT_UNTRUSTED on dotCloud

在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

更新您的节点/ npm(首选),或运行npm config set ca null

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

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

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

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

1)在你的dotcloud.yml文件中添加一个prebuild指令。 您的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

根据npm博客 ,首选解决方案是重新安装npm如下所示:

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

这也适用于dotCloud平台。 您可以将该片段用作prebuild.sh脚本 ,然后其他软件包应该安装正常。 @">1.4.0"语法只是在安装了足够新的版本后才会这样做,不会不必要地进行更新。 如果您想要更新的东西,请随时更改它。 如果您一直想要最新版本的npm ,请随意删除@">1.4.0"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM