用于 NodeJS 的 Elastic Beanstalk 上的 SELF_SIGNED_CERT_IN_CHAIN 错误

Posted

技术标签:

【中文标题】用于 NodeJS 的 Elastic Beanstalk 上的 SELF_SIGNED_CERT_IN_CHAIN 错误【英文标题】:SELF_SIGNED_CERT_IN_CHAIN error on Elastic Beanstalk for NodeJS 【发布时间】:2014-04-01 12:45:49 【问题描述】:

我很清楚这个问题的根源,正如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与安装的node版本(v0.10.10)相关联,无法告诉当前npm版本使用已知的registrar。

我为 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 ""

有人想出了解决办法吗?

【问题讨论】:

可以编辑~/.npmrc,对吧? 好吧,它没有解决任何问题,我在尝试推送新版本时仍然遇到该错误。 【参考方案1】:

我也为此苦苦挣扎。修复:https://gist.github.com/anonymous/fb32a4b053fe121b0b03。在container_commands应用时npm install已经运行。

【讨论】:

这个解决方案对我有用(带节点 v0.10.21)。显然不是一个可取的长期解决方案,但在 Elastic Beanstalk 支持更新版本之前,它在我们的开发服务器上作为权宜之计。谢谢!【参考方案2】:

今天遇到同样的问题。我通过设置我的全局 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

【讨论】:

【参考方案3】:

所以我想出了一个让它工作的方法:

把这个放到.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 ""

对我来说就像一个魅力。

【讨论】:

【参考方案4】:

很遗憾,对我没有用。亚马逊给了我一个不同的版本,但也没有用:

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

【讨论】:

【参考方案5】:

这对我也不起作用。

我发现了什么:在“命令”块运行时,节点安装文件夹是空的。我认为这是因为命令在 node + npm 完全部署到裸实例之前运行。

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

【讨论】:

以上是关于用于 NodeJS 的 Elastic Beanstalk 上的 SELF_SIGNED_CERT_IN_CHAIN 错误的主要内容,如果未能解决你的问题,请参考以下文章

Elastic:使用 Fluentd 及 Elastic Stack 进行应用日志采集

Elastic Beanstalk 上的 NodeJS 多容器 Docker

Bcrypt Elastic beanstalk nodejs 部署

如何将 NodeJS 部署自定义到 Elastic Beanstalk?

在 Elastic Beanstalk 中更新 nodejs

Nodejs中@elastic/elasticsearch的使用