Rust程序编译报错SSL connect error Unknown error

最近找到了个非常好用的http server,用rust写的:链接

一开始我只是想下载试试用一用,却发现release只有远古的0.6版本,新版本需要自己编译

于是我便尝试搭建Rust的编译环境——其实蛮简单的

然后遇到了很多坑

编译的时候我首先遇到了rust-toolchain需要nightly的编译器的错误,但是我已经默认是nightly了

报错提示

1
2
3
4
5
6
error: failed to run `rustc` to learn about target-specific information

Caused by:
process didn't exit successfully: `rustc - --crate-name ___ --print=file-names -Ctarget-feature=+crt-static -Zunstable-options --crate-type bin --crate-type rlib --crate-type dylib --crate-type cdylib --crate-type staticlib --crate-type proc-macro --print=sysroot --print=cfg` (exit code: 1)
--- stderr
error: the option `Z` is only accepted on the nightly compiler

经过一番排查,发现是项目自定义的文件rust-toolchain里写错了,安装并更换nightly的编译器,并且删除rust-toolchain就能搞定。

然后我又遇到了另一令人迷惑的错误:

1
2
3
4
5
6
7
F:\Git\simple-http-server>cargo build
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: next InitializeSecurityContext failed: Unknown error (0x80092013) - ���ڵ������������ѻ������������޷���������)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: next InitializeSecurityContext failed: Unknown error (0x80092013) - ���ڵ������������ѻ������������޷���������)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: next InitializeSecurityContext failed: Unknown error (0x80092013) - ���ڵ������������ѻ������������޷���������)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: next InitializeSecurityContext failed: Unknown error (0x80092013) - ���ڵ������������ѻ������������޷���������)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: next InitializeSecurityContext failed: Unknown error (0x80092013) - ���ڵ������������ѻ������������޷���������)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: next InitializeSecurityContext failed: Unknown error (0x80092013) - ���ڵ������������ѻ������������޷���������)

报错很长,最后是无法访问https://crates-io.proxy.ustclug.org/api/v1/crates/adler/0.2.3/download

我把这玩意复制到浏览器,发现没问题能下载

百思不得其解的我又用curl再次访问:

1
2
> curl -I https://crates-io.proxy.ustclug.org/api/v1/crates/adler/0.2.3/download
curl: (35) schannel: next InitializeSecurityContext failed: Unknown error (0x80092013) - 由于吊销服务器已脱机,吊销功能 无法检查吊销。

??????

google一番,发现好像是WinSSL / WinTLS的问题(垃圾windows)

curl加上--ssl-no-revoke参数就可以访问了

解决方法

设置环境变量CARGO_HTTP_CHECK_REVOKE为false:

1
>set CARGO_HTTP_CHECK_REVOKE=false

或者在你的%HOMEDRIVE%%HOMEPATH%\.cargo\config文件内添加(没有则创建)

1
2
[http]
check-revoke = false

即可

《完》