Tro*_*oom 7 bower docker angular-touch
在构建 docker 容器时,我遇到了这个错误
Step 6/17 : RUN bower install --allow-root ---> Running in 20f9229dcd1e bower angular-touch#~1.5.0 CERT_HAS_EXPIRED Request to https://registry.bower.io/packages/angular-touch failed: certificate has expired
建立这个形象大约有两年的时间,进展顺利,然后突然拒绝合作。如何刷新丢失的证书?
Tro*_*oom 16
就我而言,我只需在 .bowerrc 文件中添加两行
"strict-ssl": false,
"https-proxy": "",
Run Code Online (Sandbox Code Playgroud)
这是一种解决方法,也是一种不好的做法。但使用 Bower 和过时的插件也是不好的做法
您可能都在使用基于较旧节点 docker 映像的“非常旧”构建堆栈,该堆栈使用较旧的 Debian 发行版作为其基本映像(即node:6=> Debian Stretch)。
看来,registry.bower.io 的 LetsEncrypt 证书已于 2023 年 4 月 24 日更新,此后使用了更现代的中间证书。这在原始节点映像所基于的旧版 Debian 发行版中不可用/不为人所知。
当然,是时候升级您的堆栈了,但与此同时您可以使用这些解决方法。
在执行此操作之前,将其添加到您的 Dockerfile 中bower install作为解决方法:
node:6/ Debian Strech# manually remove expired letsencrypt X3 certificate and install the new ISRG X1 root CA
RUN mkdir -p /usr/share/ca-certificates/letsencrypt/ \
&& cd /usr/share/ca-certificates/letsencrypt/ \
&& curl -kLO https://letsencrypt.org/certs/isrgrootx1.pem \
&& perl -i.bak -pe 's/^(mozilla\/DST_Root_CA_X3.crt)/!$1/g' /etc/ca-certificates.conf \
&& update-ca-certificates
Run Code Online (Sandbox Code Playgroud)
然后使用此标志告诉 Bower 使用系统范围的 CA 系统:
RUN NODE_OPTIONS=--use-openssl-ca bower install ...
Run Code Online (Sandbox Code Playgroud)
node:4/ Debian Jessie不可能让这个古老的 npm 使用 openssl-ca,所以在这种情况下禁用 SSL 检查:
RUN <<EOR
cat <<EOF > .bowerrc
{
"registry": "https://registry.bower.io",
"strict-ssl": false,
"https-proxy": ""
}
EOF
EOR
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11629 次 |
| 最近记录: |