我有一个 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/