如何给Let's Encrypt证书过期的移动设备安装证书
昂流
2021年11月07日 17:28

在2021年9月30日后,你的移动设备访问某些使用了Let's Encrypt网站会出现如图所示情况,但是你发现你的设备时间是正确的,那么就有可能是因为移动设备的Let's Encrypt证书过期所致,教学适合以下设备:

Kaios:全部

Android:7.x以下设备

IOS:10.x以下设备

++++++++++KaiOS设备篇++++++++++

----------设备是比较新的系统比如2.5.4---------- 

可以考虑等待你的设备厂商推送更新修复,如果你不想等且手机已经root(临时永久root皆可),请参考下面办法安装证书。 

----------设备只有比较旧的系统比如2.5.2或者更低*----------- 

使用 Wallace Toolbox 获取临时 ROOT 权限(拨号盘按 1),对于高通210设备比如非美版的诺基亚 6300 4G 和 8000 4G,请参阅此教程(https://sites.google.com/view/bananahackers/devices/nokia-8000-4g-nokia-6300-4g-2020 )获取永久 ROOT 权限(需自备梯子,且我们不对此提供任何支持)

  拨号盘输入 *#*#​33284#*#​*,将设备接入到电脑,在终端输入 adb devices 检查是否返回设备。  访问我们已经修改好的工具包地址:https://gitee.com/mininet/a01,下载或使用 git clone 获取它。

git clone https://gitee.com/mininet/a01

cd b2g-certificates

Windows (Testing)

对于 Windows 用户,我们已经修改并移植好了一个 Batch 脚本,且准备好了大部分所需的环境,直接下载解压即可,但我们并未将 ADB 包含到工具包,请自行安装 ADB 驱动且自备 Android Platform Tools,安装驱动以及设置环境变量可参考此教程。

获取到工具包后双击 add-certificates-to-phone.bat 然后按照提示输入路径(例如对于诺基亚手机用户,输入 /data/b2g/mozilla),即可将证书导入到手机,执行后手机将会重启,之后可尝试访问使用 Let's Encrypt SSL 的网站和应用。

由于我们仅仅只是粗略的进行移植,可能会出现问题,若有问题可在此处反馈:https://github.com/openGiraffes/b2g-certificates/issues

Linux

对于 Linux 用户,请按需执行以下命令:

# Debian/Ubuntu

sudo apt-get install libnss3-tools adb wget

# RHEL/CentOS/Fedora

sudo dnf install nss-tools wget  #adb 需自行安装

# ArchLinux

sudo pacman -S nss android-tools

wget  chmod +x ./add-certificates-to-phone.sh ./add-certificates-to-phone.sh  -d  #对诺基亚用户

# Windows Subsystem for Linux (WSL)

chmod +x ./add-certificates-to-phone-wsl.sh

./add-certificates-to-phone-wsl.sh -d #对诺基亚用户

注意:对于使用 WSL 的用户,请确保 Android Platform Tools (Windows 版本)已加入到环境变量 Path 中,原因是目前的版本无法令 WSL 访问设备 

*本段由中国kaios社群OpenGiraffesGroup编写,原文链接:https://opengiraffes.top/manually-import-new-root-ca/

++++++++++IOS设备篇++++++++++ 

下载ISRG Root X1证书(https://letsencrypt.org/certs/isrgrootX1.der) 安装配置文件 证书安装后,清Safari缓存和历史记录并重启设备。

++++++++++Android设备篇++++++++++

不管你的设备是不是安卓5或者更老的系统,无论是否已经被ROOT,你都可以自己安装缺少的LE根证书,但是不管是哪种办法,都必须添加以下两个证书。     

ISRG Root X1(https://letsencrypt.org/certs/isrgrootX1.pem)

ISRG Root X2(https://letsencrypt.org/certs/isrg-root-x2.pem)

----------没有root的旧设备-----------

在安卓5或更老的系统,你可以只将这些证书安装为 "用户证书&#​34;。但是你可能必须使用带有图案/PIN或密码锁的锁屏如果你需要这么做。

-----------旧的已root的设备------------

在已root的旧版安卓设备上,你可以将新的Let's encrypt根证书添加到系统证书库/system/etc/security/cacerts.bks。 

先把该文件下载到电脑上,使用KeyStore Explorer添加Let's encrypt根证书文件并保存。然后把cacerts.bks推送到你的安卓设备上。

----------较新的已root设备----------

在较新的、有root的设备上,如果设备是通过Magisk root的,那么你可以把这两个证书作为用户证书安装,然后用Magisk模块移动证书把它们移到系统商店。 

如果你不是通过Magisk root的手机或者上述模块不可用,你可以先把证书安装为用户证书,然后手动把它们移到系统证书存储区。

这个安装过程与安装adguard 伪根证书非常相似。

输入下面命令显示Let's encrypt证书的哈希值。

openssl x509 -inform PEM -subject_hash_old -in isrgrootX1.pem | head -1

6187b673 

openssl x509 -inform PEM -subject_hash_old -in isrg-root-x2.pem | head -1

8794b4e3

为了使证书工作还要确保复制的证书文件有正确的权限。

chmod 644 /system/etc/security/cacerts/6187b673.0

chmod 644 /system/etc/security/cacerts/8794b4e3.0

++++++++++写在最后+++++++++

安装证书后,你应该能够正常访问这个网站(没有安全警告):https://valid-isrgrootX1.letsencrypt.org/