The SSL certificate is invalid on sparc64 when cargo is fetching the index
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 15.5k
- Forks
- 3k
- Avg merge
- 23h 30m
- Merged PRs (30d)
- 51
Description
Problem
It appears that there might be some bug in how cargo does its certificate validation on sparc64. It possibly may extend to other big-endian systems as well, but I haven’t been able to verify it (on both mips64 and ppc64 things I have access to the glibc is too old for rustup).
$ cargo update
Updating crates.io index
error: failed to load source for a dependency on `cc`
Caused by:
Unable to update registry `https://github.com/rust-lang/crates.io-index`
Caused by:
failed to fetch `https://github.com/rust-lang/crates.io-index`
Caused by:
the SSL certificate is invalid: 0x08 - The certificate is not correctly signed by the trusted CA; class=Ssl (16); code=Certificate (-17)
$ git clone https://github.com/rust-lang/crates.io-index
Cloning into 'crates.io-index'...
remote: Enumerating objects: 247, done.
remote: Counting objects: 100% (247/247), done.
remote: Compressing objects: 100% (233/233), done.
remote: Total 627507 (delta 123), reused 124 (delta 0), pack-reused 627260
Receiving objects: 100% (627507/627507), 128.29 MiB | 7.89 MiB/s, done.
Resolving deltas: 100% (412075/412075), done.
Checking out files: 100% (21150/21150), done.
$ curl 'https://crates.io/'
{"errors":[{"detail":"Not Found"}]}
Steps
- On a SPARC64-based machine update the cargo index (by trying to
builda rust library for the first time)
Possible Solution(s)
- Figure out and fix the SSL issues;
- Provide some way to disable certificate checking temporarily;
- Make it easy to check-out the index manually...
Notes
$ cargo version
cargo 1.30.0
$ uname -a
Linux gcc202 4.19.0-rc7-sparc64-smp #1 SMP Debian 4.19~rc7-1~exp1 (2018-10-07) sparc64 GNU/Linux
$ ldd $(which cargo)
linux-vdso.so.1 (0xfff800010002e000)
libgit2.so.27 => /usr/lib/sparc64-linux-gnu/libgit2.so.27 (0xfff8000100c18000)
libssh2.so.1 => /usr/lib/sparc64-linux-gnu/libssh2.so.1 (0xfff8000100dec000)
libcurl-gnutls.so.4 => /usr/lib/sparc64-linux-gnu/libcurl-gnutls.so.4 (0xfff8000100f18000)
libssl.so.1.1 => /usr/lib/sparc64-linux-gnu/libssl.so.1.1 (0xfff8000101098000)
libcrypto.so.1.1 => /usr/lib/sparc64-linux-gnu/libcrypto.so.1.1 (0xfff8000101224000)
libz.so.1 => /lib/sparc64-linux-gnu/libz.so.1 (0xfff80001015b8000)
libdl.so.2 => /lib/sparc64-linux-gnu/libdl.so.2 (0xfff80001016d8000)
librt.so.1 => /lib/sparc64-linux-gnu/librt.so.1 (0xfff80001017e0000)
libpthread.so.0 => /lib/sparc64-linux-gnu/libpthread.so.0 (0xfff80001018ec000)
libgcc_s.so.1 => /lib/sparc64-linux-gnu/libgcc_s.so.1 (0xfff8000101a0c000)
libc.so.6 => /lib/sparc64-linux-gnu/libc.so.6 (0xfff8000101b20000)
/lib64/ld-linux.so.2 (0xfff8000100000000)
libm.so.6 => /lib/sparc64-linux-gnu/libm.so.6 (0xfff8000101d8c000)
libmbedtls.so.12 => /usr/lib/sparc64-linux-gnu/libmbedtls.so.12 (0xfff8000101f70000)
libmbedx509.so.0 => /usr/lib/sparc64-linux-gnu/libmbedx509.so.0 (0xfff800010209c000)
libmbedcrypto.so.3 => /usr/lib/sparc64-linux-gnu/libmbedcrypto.so.3 (0xfff80001021b0000)
libhttp_parser.so.2.8 => /usr/lib/sparc64-linux-gnu/libhttp_parser.so.2.8 (0xfff8000102310000)
libgssapi_krb5.so.2 => /usr/lib/sparc64-linux-gnu/libgssapi_krb5.so.2 (0xfff800010241c000)
libkrb5.so.3 => /usr/lib/sparc64-linux-gnu/libkrb5.so.3 (0xfff8000102560000)
libk5crypto.so.3 => /usr/lib/sparc64-linux-gnu/libk5crypto.so.3 (0xfff800010272c000)
libcom_err.so.2 => /lib/sparc64-linux-gnu/libcom_err.so.2 (0xfff8000102860000)
libgcrypt.so.20 => /lib/sparc64-linux-gnu/libgcrypt.so.20 (0xfff8000102968000)
libnghttp2.so.14 => /usr/lib/sparc64-linux-gnu/libnghttp2.so.14 (0xfff8000102b2c000)
libidn2.so.0 => /usr/lib/sparc64-linux-gnu/libidn2.so.0 (0xfff8000102c50000)
librtmp.so.1 => /usr/lib/sparc64-linux-gnu/librtmp.so.1 (0xfff8000102d70000)
libpsl.so.5 => /usr/lib/sparc64-linux-gnu/libpsl.so.5 (0xfff8000102e8c000)
libnettle.so.6 => /usr/lib/sparc64-linux-gnu/libnettle.so.6 (0xfff8000102fa0000)
libgnutls.so.30 => /usr/lib/sparc64-linux-gnu/libgnutls.so.30 (0xfff80001030dc000)
libldap_r-2.4.so.2 => /usr/lib/sparc64-linux-gnu/libldap_r-2.4.so.2 (0xfff8000103330000)
liblber-2.4.so.2 => /usr/lib/sparc64-linux-gnu/liblber-2.4.so.2 (0xfff8000103480000)
libmbedcrypto.so.1 => /usr/lib/sparc64-linux-gnu/libmbedcrypto.so.1 (0xfff8000103590000)
libkrb5support.so.0 => /usr/lib/sparc64-linux-gnu/libkrb5support.so.0 (0xfff80001036f0000)
libkeyutils.so.1 => /lib/sparc64-linux-gnu/libkeyutils.so.1 (0xfff80001037fc000)
libresolv.so.2 => /lib/sparc64-linux-gnu/libresolv.so.2 (0xfff8000103904000)
libgpg-error.so.0 => /lib/sparc64-linux-gnu/libgpg-error.so.0 (0xfff8000103a1c000)
libunistring.so.2 => /usr/lib/sparc64-linux-gnu/libunistring.so.2 (0xfff8000103b3c000)
libhogweed.so.4 => /usr/lib/sparc64-linux-gnu/libhogweed.so.4 (0xfff8000103dbc000)
libgmp.so.10 => /usr/lib/sparc64-linux-gnu/libgmp.so.10 (0xfff8000103ef0000)
libp11-kit.so.0 => /usr/lib/sparc64-linux-gnu/libp11-kit.so.0 (0xfff8000104068000)
libtasn1.so.6 => /usr/lib/sparc64-linux-gnu/libtasn1.so.6 (0xfff8000104284000)
libsasl2.so.2 => /usr/lib/sparc64-linux-gnu/libsasl2.so.2 (0xfff8000104398000)
libffi.so.6 => /usr/lib/sparc64-linux-gnu/libffi.so.6 (0xfff80001044b4000)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the failure with cargo update or the first cargo build on a SPARC64 system, then trace the crates.io index fetch and certificate-validation path used by Cargo 1.30.0 and its listed SSL/Git dependencies. Done means the index fetch succeeds with normal certificate checking on SPARC64, or the issue is narrowed to a documented dependency or platform limitation; no source file or test is identified in the report.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cli, networking, security
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100