docker - 'npm 错误!作为 docker 构建的一部分运行 npm install 时的自签名证书

标签 docker npm npm-install

我有一个 Dockerfile,在其中运行 npm install

... 运行 npm 安装 ....

出现以下错误:

npm ERR! Linux 4.4.0-92-generic
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install"
npm ERR! node v7.10.1
npm ERR! npm  v4.2.0
npm ERR! code DEPTH_ZERO_SELF_SIGNED_CERT
npm ERR! self signed certificate

直接在同一台计算机上运行 npm install 时,我没有遇到此问题。 (即当我运行它时,它不是 docker 构建的一部分)。所以我不认为这个问题与任何 http 代理有关。

@塔伦,

这是curl -v https://docker.com 的输出

----* 使用 TLS1.2/ECDHE_RSA_AES_128_GCM_SHA256 的 SSL 连接

  • 服务器证书验证正常

  • 服务器证书状态验证已跳过

  • 通用名称:*.docker.com(匹配)

  • 服务器证书到期日期确定

  • 服务器证书激活日期确定

  • 证书公钥:RSA

  • 证书版本:#3

  • 主题:CN=*.docker.com

  • 开始日期:2017 年 8 月 11 日星期五 00:00:00 GMT

  • 到期日期:2018 年 9 月 11 日星期二 12:00:00 GMT

  • 发行人:C=US、O=Amazon、OU=服务器 CA 1B、CN=Amazon

  • 压缩:NULL

  • ALPN,服务器不同意协议(protocol)

GET / HTTP/1.1

Host: docker.com

User-Agent: curl/7.47.0


这是来自盒子上 docker 容器内部的curl 命令。

root@2145cd2e9997:/app/c3po#curl -v https://docker.com

  • 重建网址为:https://docker.com/

  • 在 DNS 缓存中未找到主机名

  • 正在尝试 52.55.168.191...

  • 已连接到 docker.com (52.55.168.191) 端口 443 (#0)

  • 成功设置证书验证位置:

  • CA 文件:无

    CApath:/etc/ssl/certs

  • SSLv3、TLS 握手、客户端问候 (1):

  • SSLv3、TLS 握手、服务器问候 (2):

  • SSLv3、TLS 握手、CERT (11):

  • SSLv3、TLS 警报、服务器问候 (2):

  • SSL 证书问题:自签名证书

  • 关闭连接0

  • SSLv3、TLS 警报、客户端问候 (1):

curl:(60) SSL 证书问题:自签名证书

更多详细信息请参见:http://curl.haxx.se/docs/sslcerts.html

curl 默认使用“bundle”执行 SSL 证书验证 证书颁发机构 (CA) 公钥(CA 证书)。如果默认 捆绑文件不够,您可以指定备用文件 使用 --cacert 选项。

如果此 HTTPS 服务器使用由中表示的 CA 签名的证书 bundle 中,证书验证可能由于以下原因失败 证书有问题(可能已过期,或者名称可能已过期) 与 URL 中的域名不匹配)。

如果您想关闭curl对证书的验证,请使用 -k(或--insecure)选项。

最佳答案

如果您从 Dockerfile 运行一些 npm 命令,那么您可以在运行 npm 命令之前添加此命令:

RUN npm config set strict-ssl false
RUN npm install

注意:建议将公司的根证书(如果您位于公司防火墙后面)复制到容器,而不是完全禁用 SSL。

关于docker - 'npm 错误!作为 docker 构建的一部分运行 npm install 时的自签名证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46224256/

相关文章:

node.js - 使用 npm install aws-azure-login 命令安装时无法运行 aws-azure-login

docker - 将 docker 镜像(不是 Dockerfile)部署到 Heroku?

docker - 如何将配置设置传递到docker镜像以进行本地开发?

node.js - 消息 "the term ' ng' 未被识别为 cmdlet 的名称”

node.js - NodeJS 子模块

node.js - kurento - docker 的 npm 安装错误

postgresql - Docker容器Postgres连接错误

mongodb - Docker mongodb 与 mac os x 共享卷

node.js - npm 如何/为什么建议不要以 root 身份运行?

angular - gyp ERR,Npm 无法获取本地颁发者证书