2014-01-02 2 views
2

Я вижу следующее сообщение об ошибке при развертывании службы Node.js на dotCloud:Ошибка SSL: CERT_UNTRUSTED на dotCloud

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!  <[email protected]> 
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 

ответ

4

я нашел следующее 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 
+0

[Обновить]: Предоставленный ответ является обходным путем для существующих служб. Чтобы получить доступ к обновленной версии npm, вы можете использовать пользовательскую службу node-on-dotcloud [0] [1] для доступа к более новой версии npm. [0] http://docs.dotcloud.com/services/custom/ [1] https://github.com/dotcloud/node-on-dotcloud – johncosta

+2

см. Также http://blog.npmjs.org нет/после/78085451721/НМП-самозаверяющими-сертификат-это-не-более – Andy

9

Либо обновить ваш узел/НМП (предпочтительно), или запустить npm config set ca null.

Недавно они изменили сертификат на npmjs.org, потому что старый истек, но ваш npm имеет старый жесткий код в нем.

PS: установка strict-ssl на false - это очень плохая идея, если вы не знаете, что делаете.

2

Согласно npm blog, предпочтительным решением является переустановка npm так:

#!/bin/bash 
set -e 
npm install [email protected]">1.4.0" -g --ca=null 

Это также будет работать на платформе dotCloud. Вы можете использовать этот фрагмент как ваш prebuild.sh script, а затем остальные пакеты должны быть установлены нормально. Синтаксис @">1.4.0" просто делает это так, как только вы установили достаточно новую версию, вы не будете постоянно обновлять ее. Если вы хотите что-то новое, не стесняйтесь его менять. Если вы всегда хотите получить последнюю версию npm, не стесняйтесь удалять @">1.4.0" вообще.

Смежные вопросы