![](/img/trans.png)
[英]npm install timesout when running docker build . on windows 11
[英]'npm ERR! self signed certificate' when running npm install as part of docker build
我有一個 Dockerfile,我在其中運行 npm install
... 運行 npm install ....
出現以下錯誤:
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 build 的一部分)。 所以我不相信這個問題與任何 http 代理有關。
@塔倫,
這是 curl -v https://docker.com的輸出
----* SSL 連接使用 TLS1.2 / ECDHE_RSA_AES_128_GCM_SHA256
服務器證書驗證OK
服務器證書狀態驗證已跳過
通用名稱:*.docker.com(匹配)
服務器證書到期日期 OK
服務器證書激活日期 OK
證書公鑰:RSA
證書版本:#3
主題:CN=*.docker.com
開始日期:2017 年 8 月 11 日星期五 00:00:00 GMT
到期日期:2018 年 9 月 11 日,星期二 12:00:00 GMT
發行人:C=US,O=Amazon,OU=Server CA 1B,CN=Amazon
壓縮:NULL
ALPN,服務器不同意協議
獲取/HTTP/1.1
主辦方:docker.com
用戶代理:curl/7.47.0
這是來自盒子上的 docker 容器內的 curl 命令。
root@2145cd2e9997:/app/c3po# curl -v https://docker.com
重建 URL 到: 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 默認使用證書頒發機構 (CA) 公鑰 (CA 證書) 的“捆綁”執行 SSL 證書驗證。 如果默認包文件不夠用,您可以使用 --cacert 選項指定備用文件。
如果此 HTTPS 服務器使用由捆綁中表示的 CA 簽名的證書,則證書驗證可能會因證書問題而失敗(它可能已過期,或者名稱可能與 URL 中的域名不匹配)。
如果您想關閉 curl 對證書的驗證,請使用 -k(或 --insecure)選項。
我想通了。 我在 docker 主機上運行 jenkins,我正在使用 iptables 將端口 443 轉發到 8080。這與 docker 自己的 iptable 規則相沖突,這導致了我所有的自簽名證書問題。
這個stackoverflow帖子幫助我確定了問題: SSL證書驗證在特定服務器上的docker容器內失敗
如果你從 Dockerfile 運行一些npm
命令,那么你可以在運行 npm 命令之前添加它:
RUN npm config set strict-ssl false
RUN npm install
注意:建議將您公司的根證書(如果您位於公司防火牆后面)復制到容器中,而不是完全禁用 SSL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.