Windows 10下GHCup安装报错:www.haskell.org证书不被信任
Windows 10下GHCup安装证书错误修复方案
一、更新Windows系统根证书
- 打开管理员权限的CMD,执行以下命令更新根证书:
certutil -generateSSTFromWU RootCerts.sst certutil -addstore -f root RootCerts.sst - 完成后删除生成的
RootCerts.sst文件,重启终端再尝试安装
二、检查并导入关键根证书
- 运行
certmgr.msc打开证书管理器,展开「受信任的根证书颁发机构」→「证书」,检查是否存在DigiCert Global Root CA和DigiCert TLS RSA SHA256 2020 CA1 - 如果找不到,从Chrome导出导入:
- 用Chrome打开haskell官网,点击地址栏的锁图标→「证书」→「路径」标签
- 选中最顶层的根证书,点「查看证书」→「详细信息」→「复制到文件」
- 选DER编码二进制格式,存成
.cer文件,双击该文件选「安装证书」→「本地计算机」→「受信任的根证书颁发机构」完成导入
三、修复MinGW的ca-bundle.crt
- 找到MinGW路径下的
/usr/ssl/certs/ca-bundle.crt(比如Git自带的路径是C:\Program Files\Git\usr\ssl\certs) - 备份原文件后,把Windows根证书导出为PEM格式:
- 在
certmgr.msc里右键「受信任的根证书颁发机构」→「所有任务」→「导出」 - 选Base64编码X.509格式,存成
.pem文件 - 把
.pem里的内容复制替换到ca-bundle.crt中
- 在
- 嫌麻烦的话,也可以直接执行
certutil -encode root RootCerts.pem,把生成的内容追加到ca-bundle.crt里
四、恢复中断的安装
- 直接重新运行GHCup的安装命令:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://get-ghcup.haskell.org')) - 如果还是不行,手动下载GHCup安装包,右键管理员运行,选择本地安装模式跳过在线验证
- 临时关闭代理、防火墙再试,安装完成后再恢复
内容的提问来源于stack exchange,提问作者TomR
相关产品推荐
相关产品推荐

