HTTPS 证书校验失败的几种处理办法
默认行为
从 1.1.0 起 aria2 默认校验 HTTPS 服务器证书(--check-certificate 默认 true)。校验失败会拒绝下载,这是正常的安全行为,先弄清原因再决定怎么处理。
常见原因与对策
原因一:构建没有可用的系统 CA 库。
部分源码编译的版本没有接入系统证书库。对策:给一份 CA 证书包:
aria2c --ca-certificate=ca证书包路径 --check-certificate "下载直链"
证书包需 PEM 格式(Linux 发行版一般自带,如 ca-certificates 包里的文件)。官方编译的 Windows 构建(WinTLS)与 macOS 构建(AppleTLS)直接用操作系统信任库,不需要这个参数。
原因二:内网自签名证书。
公司/家庭内网服务用自签证书,系统信任库里没有。对策:把该 CA 证书导入系统信任库,或用 --ca-certificate 指定该 CA 的 PEM 文件。
原因三:客户端证书场景。
服务器要求客户端出示证书时:
aria2c --certificate=客户端证书路径 "下载直链"
PKCS12(.p12/.pfx)要求导入密码为空;PEM 格式还要配 --private-key 指定私钥。注意 Windows 构建的 WinTLS 暂不支持 PEM。
原因四:时钟不对。
系统时间偏差大会导致证书"未生效/已过期"误报,校准时间即可。
临时关闭校验
aria2c --check-certificate=false "下载直链"
只建议在临时验证、完全可信的内网环境用——关闭后流量可能被中间人替换,下完务必自己校验哈希(见校验完整性)。长期方案永远是修好信任链而不是关校验。
RPC 服务同理
RPC 接口启用 TLS 用的是独立参数组合:--rpc-secure 配 --rpc-certificate 与 --rpc-private-key,证书格式要求同上,见开启 RPC。