3 须道菩提一剑斩天 3小时前 52次点击
# 在 Windows 上折腾 AltStore:从 `Server returned invalid response` 到成功安装的完整排障记录
这次安装 AltStore 的过程,本来以为就是“下载 AltServer、插上 iPad、输入 Apple ID、安装”这么简单,最后硬是变成了一次完整的 Windows 网络、证书、Apple GrandSlam 和无障碍软件折腾实战。
最终结果当然是成功了,但整个过程非常曲折,而且真正解决问题的办法,居然不是最开始怀疑的 Apple ID、iTunes、iCloud、证书,甚至也不是 AltServer 版本,而是——**必须让 Windows 的系统级网络流量真正经过代理。**
下面把整个过程记录下来,也算给后来遇到同样问题的人留个参考。
## 一、起因:AltServer 怎么都装不上
我的环境是 Windows 电脑,目标设备是 iPadOS 26 的 iPad。准备使用的是目前 Windows 可用的最新版 AltServer,版本为:
> AltServer 1.7.4.0
前置组件也全部按照官方方式准备好了:
* iTunes:从 Apple 官网下载
* iCloud:从 Apple 官网下载
* iPad 通过 USB 连接电脑
* iPad 已经点击“信任此电脑”
* Apple ID 和密码确认无误
但是通过 AltServer 安装 AltStore 时,一直弹出:
> `Server returned invalid response.`
一开始我当然以为是 Apple ID 的问题。于是换了两个 Apple ID 测试,结果完全一样。
这时候 Apple ID 基本可以排除了。
然后怀疑 iTunes 和 iCloud。因为 Windows 上 Apple 的软件经常有 Microsoft Store 版和 Apple 官网版的区别,所以我又确认自己使用的是 Apple 官网版本。
还是不行。
接下来又检查 USB 连接、设备信任,均正常。
AltServer 也已经是 1.7.4.0,也不是因为版本太旧。
## 二、第一轮排查:怀疑代理
由于 Windows 本身使用了代理工具,我首先怀疑可能是代理导致 AltServer 访问 Apple 服务失败。
于是直接关闭代理,再尝试。
结果:
> 还是 `Server returned invalid response.`
这让我一度觉得“代理应该不是问题”。
现在回头看,这一步其实是整个排障过程中,绕得最大弯路之一。
因为后来证明:
**关闭普通代理 ≠ AltServer 的 Apple 网络请求正常。相反,必须完全开启代理,才能成功连接**
## 三、开始检查 Apple GrandSlam
AltServer 在进行 Apple ID 相关验证时,会涉及 Apple 的 GrandSlam 服务。其中一个重要的端点就是:
```text
https://gsa.apple.com/grandslam/GsService2
```
于是开始从最基础的网络连接查起。
在 PowerShell 里运行:
```powershell
curl.exe -v https://gsa.apple.com/grandslam/GsService2
```
首先得到:
```text
Host gsa.apple.com:443 was resolved.
IPv4: 17.23.96.10
Trying 17.23.96.10:443...
```
DNS 没问题。
但是 TLS 握手失败:
```text
SEC_E_UNTRUSTED_ROOT
```
也就是:
> 证书链是由不受信任的颁发机构颁发的。
这一下又把排查方向引向了 Windows 的证书系统。
## 四、发现 Windows 缺少 Apple Root CA
为了确认到底是谁发的证书,我绕过证书检查直接连接:
```powershell
curl.exe -vk https://gsa.apple.com/grandslam/GsService2
```
结果可以正常连接 Apple:
```text
Connected to gsa.apple.com
```
然后服务器返回:
```text
HTTP/1.1 401 Unauthorized
Server: Apple
```
这里的 401 本身并不奇怪,因为我们只是用普通 GET 请求访问 GrandSlam API,没有提供 Apple 所需要的认证数据。
接下来直接用 Windows/.NET 获取服务器证书信息,得到:
```text
Subject : C=US, S=California, O=Apple Inc., CN=gsa.apple.com
Issuer : C=US, O=Apple Inc., OU=Certification Authority, CN=Apple Server Authentication CA
```
然后构造证书链:
```powershell
$chain = [System.Security.Cryptography.X509Certificates.X509Chain]::new()
$chain.Build($cert)
```
结果:
```text
False
```
进一步查看:
```text
Status : PartialChain
StatusInformation : 无法建立到信任根颁发机构的证书链。
```
查看链元素后,情况彻底清楚:
```text
gsa.apple.com
↓
Apple Server Authentication CA
↓
Apple Root CA
```
而我的 Windows 中没有 `Apple Root CA`。
检查:
```powershell
Get-ChildItem Cert:\LocalMachine\Root |
Where-Object {$_.Subject -like "*Apple Root CA*"}
```
没有任何结果。
当前用户的 Root 存储同样没有。
于是从 Apple 官方 PKI 找到了对应的旧版:
> `Apple Root CA`
下载官方:
```text
AppleIncRootCertificate.cer
```
证书指纹也进行了核对,确认就是我们需要的那一张。
## 五、导入 Apple Root CA
一开始想通过图形界面安装,但因为我使用的是屏幕阅读器,Windows 的证书界面操作体验并不理想,而且右键/打开证书时也没有直接得到想要的“安装证书”入口。
后来直接使用管理员 PowerShell:
```powershell
certutil -addstore -f Root "$env:USERPROFILE\Downloads\AppleIncRootCertificate.cer"
```
成功以后显示:
```text
证书 "Apple Root CA" 已经在存储中。
CertUtil: -addstore 命令成功完成。
```
再测试:
```powershell
curl.exe -v https://gsa.apple.com/grandslam/GsService2
```
这一次最大的变化是:
**`SEC_E_UNTRUSTED_ROOT` 消失了。**
TLS 已经正常。
这说明 Windows 的证书链问题确实存在,而且已经被修复。
## 六、然而……AltServer 还是失败
事情到了这里,本来以为马上成功。
结果重新打开 AltServer,再安装 AltStore:
> 还是 `Server returned invalid response.`
这时候就有点见鬼了。
证书正常了,两个 Apple ID 都试过了,iTunes/iCloud 正常,设备也正常,AltServer 还是最新版。
我又用 curl 测试 GrandSlam。
普通 GET:
```text
HTTP/1.1 503 Service Temporarily Unavailable
Server: Apple
```
普通 POST:
```text
HTTP/1.1 401 Unauthorized
Server: Apple
```
后来发现,**这些测试其实并不能直接证明 GrandSlam 本身有问题**。
因为 AltServer 实际使用的 GrandSlam 请求并不是一个普通的 GET 或空 POST。它需要完整的请求头、请求体以及 Apple 认证相关参数。
所以:
```text
GET → 401/503
POST → 401
```
并不意味着 AltServer 的请求一定会得到同样结果。
而这也让我不得不重新审视一个问题:
> “为什么关闭代理以后,浏览器能用、curl 能连接、Apple 服务也能连接,但 AltServer 还是失败?”
## 七、真正的破案:必须全局代理
最后真正解决问题的办法非常戏剧性。
我原先一直在使用 v2rayN,但是它的 Windows 无障碍体验实在非常糟糕,前面光是让它自己正常工作就折腾了很久。
后来我想到一个比较奇怪但有效的方案:
> **SoftEther 加 公开链路,此外为了让它正常工作,我套上了一层 v2rayN**
具体思路是:
**SoftEther 负责给 Windows 提供系统级 /全局网络**
再让:
**v2rayN 负责客户端能正常连接**
这样 Windows 看到的是一条真正的系统级网络通道,而不是简单的浏览器代理或者某些程序能识别、某些程序识别不到的代理设置。
于是我开启了全局代理,再次启动:
> AltServer 1.7.4.0
这一次,完全没有重新安装 iTunes、没有换 Apple ID、没有重新装 AltServer,也没有进一步修改证书。
直接出现了:
> **Installing AltStore to Harmonia one ESQ 900(我自己给iPad改的名称)...**
> **This may take a few seconds.**
看到这条通知的时候,我真的有一种“见鬼之后终于见到天主”的感觉。
随后:
> **AltStore 安装成功。**
接下来,通用vpn与设备管理中信任all store
隐私与安全性中打开开发者模式。
到此,整个过程终于结束。
## 八、最后的结论
现在回头看,这次问题实际上有两个层次。
### 第一层:Windows 缺少 Apple Root CA
这是真实存在的问题,而且已经被实验证明。
最初:
```text
SEC_E_UNTRUSTED_ROOT
PartialChain
```
而且 Windows 的 Root 证书存储确实没有:
```text
Apple Root CA
```
安装 Apple 官方的 `AppleIncRootCertificate.cer` 后:
```text
SEC_E_UNTRUSTED_ROOT
```
消失。
所以这部分不是误判。
### 第二层:AltServer 的实际 Apple 请求还需要正确的全局网络路径
真正导致 AltStore 最终无法安装的,是代理路由。
普通关闭代理时,即便:
```text
DNS 正常
TCP 正常
TLS 正常
```
AltServer 的完整 GrandSlam 请求仍然没有通过能够正常访问 Apple 服务的网络路径。
而:
> **SoftEther 提供系统级网络 → v2rayN 提供出口 → 全局流量经过代理**
之后,AltServer 立即进入安装流程。
这说明:
> **“curl 能访问 gsa.apple.com”并不等于“AltServer 的 GrandSlam 请求一定能正常完成”。**
这可能和程序使用的网络 API、代理继承方式、分流规则、Apple 服务节点以及具体请求流程有关。
## 九、给后来折腾 AltServer 的人的建议
如果你在 Windows 上使用 AltServer,遇到:
> `Server returned invalid response`
不要一上来疯狂换 Apple ID。
可以按照这个顺序检查:
首先确认 AltServer 是最新版。
然后确认 iTunes 和 iCloud 是 Apple 官网版本。
确认 iPad/iPhone 已经通过 USB 连接并信任电脑。
然后检查:
```text
gsa.apple.com
```
是否可以连接。
如果 Windows 报:
```text
SEC_E_UNTRUSTED_ROOT
```
可以检查 Apple Root CA 是否存在于:
```text
受信任的根证书颁发机构
```
但即使修复 TLS 后仍然无法安装,也不要认为问题已经结束。
**尤其是 Windows 使用代理/ 的环境。**
最值得测试的是:
> **让整个 Windows 系统真正走全局网络路径,而不仅仅是浏览器走代理。**
这次我的最终成功方案就是:
> **SoftEther (筑波大学公共 )+ v2rayN + 全局网络**
它比单纯让 v2rayN 作为普通系统代理可靠得多。
## 十、这次折腾的最终状态
最后我的环境是:
```text
Windows
├─ Apple 官网 iTunes
├─ Apple 官网 iCloud
├─ AltServer 1.7.4.0
├─ Apple Root CA 已安装
├─ SoftEther
├─ v2rayN
└─ 全局代理
↓
Apple GrandSlam
↓
AltServer
↓
USB
↓
iPadOS 26
↓
AltStore
```
最终成功。
所以,如果有人以后问我:
> “为什么 AltServer 明明能联网,还是一直 `Server returned invalid response`?”
我的回答大概会变成:
> **先检查证书,再检查代理。尤其不要被“浏览器能打开网页”骗了。AltServer 要的是它自己的 Apple 服务通信链路。**
而我这次最大的教训就是:
Windows 上“系统代理”和“这个程序真正走代理”完全是两回事。**
折腾到最后,真正救我的不是换 ID,也不是重装 iTunes,而是一条非常朴素的原则:
> **让整个系统都走正确的网络。**
——折腾结束,AltStore 成功落地。
天主保佑,终于不用再看那句 `Server returned invalid response` 了。
上面的内容经过一些ai修改,所以可能会存在ai感,请介意者轻喷。
有一些不明符号,可能会被天坛社区给吞掉。不用关心,我们的天海社区。