NodeJS的Elastic Beanstalk上出现SELF_SIGNED_CERT_IN_CHAIN错误

时间:2014-02-28 13:26:08

标签: node.js amazon-web-services npm elastic-beanstalk

我很清楚这个问题的根源,正如npm在他们的博客上写的那样:http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more

解决方案是:

  

1)升级您的npm版本

     

npm install npm -g

     

     

2)告诉你当前版本的npm使用已知的注册商

     

npm config set ca ""

但是,这些解决方案都不适用于Elastic Beanstalk。 npm链接到已安装节点的版本(v0.10.10),并且无法告知当前的npm版本使用已知的注册商。

我为NodeJS运行64位Amazon Linux实例

.ebextensions中添加此命令无效:

container_commands:
  01_npm-fix:
    command: /opt/elasticbeanstalk/node-install/node-v0.10.10-linux-x64/bin/npm config set ca ""

有人为此找到了解决方案吗?

5 个答案:

答案 0 :(得分:1)

我也在努力解决这个问题。修复:https://gist.github.com/anonymous/fb32a4b053fe121b0b03。在container_commands npm install中应用已经运行。

答案 1 :(得分:1)

今天遇到同样的问题。我通过设置我的全局npmrc文件来修复它,如下所示:

02_no-cert:
  command: "rm -rf /opt/elasticbeanstalk/node-install/node-v0.10.21-linux-x64/etc && mkdir /opt/elasticbeanstalk/node-install/node-v0.10.21-linux-x64/etc && echo 'ca = ' > /opt/elasticbeanstalk/node-install/node-v0.10.21-linux-x64/etc/npmrc"
  ignoreErrors: true

答案 2 :(得分:0)

所以我找到了一种让它发挥作用的方法:

将其放入.ebextensions

commands:
  01_enable_rootaccess:
    command: echo Defaults:root \!requiretty >> /etc/sudoers
  02_no-cert:
    command: sudo /opt/elasticbeanstalk/node-install/node-v0.10.10-linux-x64/bin/npm config set ca ""

在我的案例中像魅力一样工作。

答案 3 :(得分:0)

可悲的是,没有为我工作。亚马逊给了我一个不同的版本,但也没有用:

命令:   01-命令:     命令:'$(find / opt / elasticbeanstalk / node-install / * / bin | grep“npm $”| head -n1)config set ca“”'

答案 4 :(得分:0)

它也不适用于我。

我找到的内容:在运行“命令”块时,node-install文件夹为空。我假设这是因为在node + npm之前运行的命令完全部署到裸实例。

我将在今天晚些时候尝试测试这个假设,并提供进一步的反馈。