alpine 用国内源,出现 https 证书问题

2021-10-11 22:05:05 +08:00
 aocif23

一开始用的是 v3.7 版,中科大的源(清华的源同样问题),默认为 http,改为 https 后更新不了,出错提示如下

#apk update
fetch https://mirrors.ustc.edu.cn/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
127499998981068:error:14007086:SSL routines:CONNECT_CR_CERT:certificate verify failed:ssl_clnt.c:1026:
ERROR: https://mirrors.ustc.edu.cn/alpine/v3.7/main: Permission denied
WARNING: Ignoring APKINDEX.1076f322.tar.gz: No such file or directory
fetch https://mirrors.ustc.edu.cn/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
127499998981068:error:14007086:SSL routines:CONNECT_CR_CERT:certificate verify failed:ssl_clnt.c:1026:
ERROR: https://mirrors.ustc.edu.cn/alpine/v3.7/community: Permission denied
WARNING: Ignoring APKINDEX.ca14b9dd.tar.gz: No such file or directory

后来试了几个版本 3.6,3.9,3.10 ,3.12 ,3.14 都可以用 https(USTC),只有 3.7 和 3.8 不用了 https 。

改回 http 后是正常的

#apk update
fetch http://mirrors.ustc.edu.cn/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
fetch http://mirrors.ustc.edu.cn/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
v3.7.3-184-gffd32bfd09 [http://mirrors.ustc.edu.cn/alpine/v3.7/main]
v3.7.3-194-gcddd1b2302 [http://mirrors.ustc.edu.cn/alpine/v3.7/community]

最后,v3.7 用南京大学的源后,可以使用 https

#apk update
fetch https://mirrors.nju.edu.cn/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
fetch https://mirrors.nju.edu.cn/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
v3.7.3-184-gffd32bfd09 [https://mirrors.nju.edu.cn/alpine/v3.7/main]
v3.7.3-194-gcddd1b2302 [https://mirrors.nju.edu.cn/alpine/v3.7/community]

还好这个发行版容量小安装快(选它也是因为容量问题),否则都不会安装几个版本来测试。

3981 次点击
所在节点    Linux
9 条回复
iBugOne
2021-10-11 22:18:25 +08:00
据我所知,USTC 和 TUNA 镜像站都使用 Let's Encrypt 提供的免费 SSL 证书,而 LE 原先使用的根证书 DST Root CA X3 已于 9 月 30 日过期,新的 ISRG Root X1 根证书默认不在旧版系统的信任列表里,详情可以参见 https://github.com/tuna/issues/issues/1342
yzwduck
2021-10-11 22:53:17 +08:00
问题确实是在 Let's Encrypt 的根证书上,但不是 CA 列表问题。
ISRG Root X1 ( https://crt.sh/?id=9314791) 的证书确实在 /etc/ssl/certs/ca-certificates.crt 里,但是 ISRG 原先证书链的根证书 DST Root CA X3 ( https://crt.sh/?id=8395) 过期了,很多旧版本的 SSL 库在 X1 列在 CA 里的情况下,仍然因为 X3 过期而拒绝连接。
解决方法貌似只能更新 SSL 库。

在 macOS 10.15 以及之前的系统上,LibreSSL 也因为相同原因,无法连接 Let's Encrypt 的网站。
ysc3839
2021-10-11 23:36:44 +08:00
taoky
2021-10-11 23:43:04 +08:00
eason1874
2021-10-12 00:04:26 +08:00
没用过 Alpine,我的树莓派这样三步解决,删掉过期根证书,注释配置,然后更新

rm /etc/ssl/certs/DST_Root_CA_X3.pem

vi /etc/ca-certificates.conf
!mozilla/DST_Root_CA_X3.crt

sudo update-ca-certificates
aocif23
2021-10-12 00:57:49 +08:00
#4
@taoky
直接从网站解决问题,更新正常了。

#5
@eason1874
Alpine3.8 没有这个文件,/etc/ssl/certs/DST_Root_CA_X3.pem
编辑 /etc/ca-certificates.conf 注释 mozilla/DST_Root_CA_X3.crt 后
sudo update-ca-certificates
问题依旧(所以用清华的源来测试)。
aocif23
2021-10-12 00:59:14 +08:00
#6
@aocif23
问题依旧(用清华的源来测试)。
eason1874
2021-10-12 01:34:59 +08:00
@aocif23 没有单独文件那应该是统一放在了同一个 cert.pem 里,你打开那个文件(先备份一份到别处),找到 DST Root CA X3 那部分证书删掉。步骤应该差不多,只是证书位置不一样。找到过期证书,删掉,更新缓存。

测试网址也可以用 https://helloworld.letsencrypt.org/
aocif23
2021-10-12 03:59:41 +08:00
#8
@eason1874
找到 /etc/ssl/cert.pem 并删除 DST Root CA X3 部分,更新缓存解决了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/807153

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX