Skip to content

Instantly share code, notes, and snippets.

@davidB
Last active December 25, 2019 08:49
Show Gist options
  • Save davidB/bed8ea360f859a23889d9c9cc4eefb85 to your computer and use it in GitHub Desktop.
Save davidB/bed8ea360f859a23889d9c9cc4eefb85 to your computer and use it in GitHub Desktop.
GKE access failed via reqwest
[package]
name = "test_gke_cert"
version = "0.1.0"
authors = ["David Bernard"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
openssl = { version = "^0.10", features = ["vendored"] }
tokio = { version = "^0.2.5", features = ["full"]}
[dependencies.reqwest]
#version = "0.10.0"
# version = " 0.10.0-alpha.2"
git = "https://github.com/seanmonstar/reqwest"
rev = "18fd9a63b0eb7bf51d2e2b7fe31b4567f0b05779"
features = ["json", "gzip", "rustls-tls"]
# features = ["rustls-tls"]
# # TODO: rustls
// Mac OSX (Catalina 10.15.2):
// ```
// Error: reqwest::Error { kind: Request, url: "https://35.232.6.83/", source: hyper::Error(Connect, Error { code: -67843, message: "The certificate was not trusted." }) }
// ```
//
// Linux:
// ```
// Response {
// url: "https://35.232.6.83/",
// status: 403,
// headers: {
// "audit-id": "83ac14e8-8beb-4456-b495-35c81ba9b348",
// "content-type": "application/json",
// "x-content-type-options": "nosniff",
// "date": "Sat, 21 Dec 2019 18:21:52 GMT",
// "content-length": "185",
// },
// }
///```
use openssl::x509::X509;
use reqwest;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let pem = r#"
-----BEGIN CERTIFICATE-----
MIIDDDCCAfSgAwIBAgIRANMRvVXXaTbXyxpbqXtlgyEwDQYJKoZIhvcNAQELBQAw
LzEtMCsGA1UEAxMkMzg1NTM1MzEtOTgwNS00NzcwLTllMzItMmY1MmM1NDU3NWY4
MB4XDTE5MTIxOTA3NTM1OVoXDTI0MTIxNzA4NTM1OVowLzEtMCsGA1UEAxMkMzg1
NTM1MzEtOTgwNS00NzcwLTllMzItMmY1MmM1NDU3NWY4MIIBIjANBgkqhkiG9w0B
AQEFAAOCAQ8AMIIBCgKCAQEAmX8Eg6r6tygSiIM3nMS4VwnYoXrrIuixlCGqsI4L
sw5j9oTslbNvsOjfFnRGyMK6wPm7x/htMC5B44Jyh2BedZbfcp7WXZJr7Dq/9SgR
/TPZmb1GwqVvqfE4RmzwK6wcaMSEkF/mqc9+IWiEpmMRmkdsvj2/8fydQM2+Wj8y
qSzaIgMopsaNuA4EWIKABeQH8vzIMjiEsvSpGDRRF14G6OMeCUypa780HCUwNKkc
BaAUc1VzAcQYTNzx78Y4IZCJjkwtBfKYWUibIWWeJaDAzNEbYGeBNtc6/kbvUuCL
VmibQ5+Qo6kgjchElRECZU4dhz8FKOMWh3YFyNpE7hZqrwIDAQABoyMwITAOBgNV
HQ8BAf8EBAMCAgQwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEA
b0qhFcv4LriftJrB5RX0XHjEjGiEirv4Xq9rUgGOTYGnrtKtqu7DPIoZagYgByTX
VnpqGJczQ/ZGZyAeE502uH6np6ftmQi98NFNe5W7btv/U4ZHN8VzQ2+77uBw/orY
YuVKNMMcc+CfO8pX2rv8Z4YUUvBz3/YO9h5K1IBjXuLCI+PM6+2OMFfaoSI0Iz8q
sazWeeT8orW1/LdJMokCkGqgPZC8X15j2/E6YlzPeebAQK/QgpMYg9XoHWJcuhSx
RgGI71iQAaYoBYSxSgV2cteECEiJlMoInkU0HCX7JlZlR/ypZl+ybPFVQigsAfpu
o098cHJLzIFII9icY8n1dQ==
-----END CERTIFICATE-----
"#;
let ca = X509::from_pem(pem.as_bytes())?;
let cert = reqwest::Certificate::from_der(&ca.to_der()?)?;
// dbg!(&ca.subject_name());
// dbg!(&ca.subject_name());
// dbg!(&cert);
let mut client_builder = reqwest::Client::builder();
client_builder = client_builder
.add_root_certificate(cert)
// .danger_accept_invalid_certs(true)
;
let client = client_builder.build()?;
let resp = client.get("https://35.232.6.83").send().await?;
println!("{:#?}", resp);
Ok(())
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment