如何刷新bower包证书?

问题描述 投票:0回答:6

在构建 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

建立这个形象工作了大约2年,然后突然拒绝合作。 如何刷新丢失的证书?

docker bower angular-touch
6个回答
5
投票

你们可能都在使用基于旧节点 docker 映像的“非常旧”的构建堆栈,它使用旧的 Debian 发行版作为其基本映像(即

node:6
=> Debian Stretch)。

registry.bower.io 的 letsencrypt 证书好像昨天(2023 年 4 月 24 日)更新了,现在使用更现代的中间证书。这在旧的 Debian 发行版中不可用/未知。

当然是时候升级你的堆栈了,但与此同时你可以将它添加到你的 Dockerfile 中,就在你做

bower install
作为解决方法之前:

# 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

然后使用这个标志告诉 bower 使用系统范围的 CA 系统:

RUN NODE_OPTIONS=--use-openssl-ca bower install ...

1
投票

在我的例子中,我只是在 .bowerrc 文件中添加了两行

"strict-ssl": false,
"https-proxy": "",

这是解决方法,但这是不好的做法。但是使用 bower 和过时的插件也是不好的做法


1
投票

我从昨天开始收到这些错误。 我像下面这样解决了它: 如果你在 bower.json 中有这样的依赖项:

 "dependencies": {
    "bootstrap-sass": "3.2.0",
    "jquery": "2.2.0",
...
}

然后改成:

"dependencies": {
    "bootstrap-sass": "https://github.com/twbs/bootstrap-sass.git#3.2.0",
    "jquery": "https://github.com/jquery/jquery.git#2.2.0",
...
}

使用您指定的版本和 git url。 你会在这里找到所有 bower 包的 git url:https://registry.bower.io/packages


1
投票

bower install
仍然适用于较新版本的节点。 据我所知,证书在版本 6、7 和 8 上停止工作。

作为解决方法:我只在较新的节点(例如 12)上执行

bower install
命令,其余用于构建项目的命令在我需要的版本上执行。

它在我们的项目中起作用。


1
投票

指向

.bowerrc

中较新的注册表

在这里回答

{
 "directory": "bower_components",
 "registry": "https://bower.herokuapp.com"
}

0
投票

将节点版本从 8 更新到 18 为我修复了错误。

© www.soinside.com 2019 - 2024. All rights reserved.