WSL - 解决 WSL Fedora 中 SSL 证书问题

在使用 JetBrains RustRover 通过 Gateway 连接 WSL Fedora 43 时,遇到了无法下载 IDE 后端的问题。错误信息如下:

curl: (60) SSL certificate problem: unable to get local issuer certificate ERROR: The certificate is NOT trusted. The certificate issuer is unknown.

问题分析

根本原因

1. 证书重定向问题:JetBrains 下载服务器会根据地理位置将请求重定向到 CDN

- 初始请求https://download.jetbrains.com (证书验证成功)

- 重定向到https://download-cdn.clf.jetbrains.com.cn (中国 CDN,证书验证失败)

2. WSL 与 Windows 证书隔离:Windows 系统安装的根证书不会自动同步到 WSL Linux 发行版

3. 企业网络环境:可能存在 SSL 代理(如 Zscaler)进行 MITM 检查,需要企业自签名证书

排查过程

测试基本连接

# 测试初始连接(成功)
curl -v https://download.jetbrains.com/

# 输出显示证书验证通过,但返回 302 重定向

分析重定向后的连接

# 跟随重定向测试
curl -v -L https://download.jetbrains.com/rustrover/RustRover-2025.2.4.1.tar.gz

# 发现重定向到中国 CDN 后证书验证失败

检查证书链

# 查看 CDN 证书信息
openssl s_client -connect download-cdn.clf.jetbrains.com.cn:443 -showcerts </dev/null

解决方案

如果你的网络环境有企业代理,需要从 Windows 导入企业证书。

Windows 端操作(PowerShell 管理员)

# 创建证书导出目录
$CertDir = "$HOME\Desktop\wsl-certs"
New-Item -ItemType Directory -Force -Path $CertDir

# 导出所有根证书
Get-ChildItem -Path Cert:\LocalMachine\Root\ | ForEach-Object {
    $filename = "$CertDir\$($_.FriendlyName -replace '[^a-zA-Z0-9]', '_').cer"
    Export-Certificate -Cert $_ -FilePath $filename -Type CERT
}

WSL Fedora 端操作

# 安装 openssl(如果没有)
sudo dnf install -y openssl

# 转换并安装所有 Windows 证书
for cert in /mnt/c/Users/fql/Desktop/wsl-certs/*.cer; do
    if [ -f "$cert" ]; then
        filename=$(basename "$cert" .cer)
        sudo openssl x509 -inform der -in "$cert" \
          -out "/etc/pki/ca-trust/source/anchors/$filename.pem" 2>/dev/null || true
    fi
done

# 更新证书信任库
sudo update-ca-trust extract

# 验证
curl -v https://download-cdn.clf.jetbrains.com.cn/

验证解决方案

测试 curl 连接

# 测试直接连接
curl -v https://download-cdn.clf.jetbrains.com.cn/

# 测试完整下载流程
curl -fSL -L https://download.jetbrains.com/rustrover/RustRover-2025.2.4.1.tar.gz -o /tmp/test.tar.gz

# 检查下载的文件
ls -lh /tmp/test.tar.gz

测试 JetBrains Gateway

在 RustRover 中重新尝试连接 WSL,Gateway 应该能够成功下载并部署 IDE 后端。

参考资源


环境

  • OS: Windows 11 + WSL 2
  • 发行版: Fedora Linux 43
  • IDE: JetBrains RustRover 2025.2.4.1