Saltar al contenido
ecdsa.com
rustls (via reqwest, ureq, tonic)Rust

Mensaje de error

received corrupt message of type InvalidContentType

reqwest lo muestra al final de «error sending request for url (…): client error (Connect): received corrupt message of type InvalidContentType»; ureq, como «io: received corrupt message of type InvalidContentType». Ante la misma situación, los clientes basados en OpenSSL muestran «wrong version number».

rustls (via reqwest, ureq, tonic) — rustls::Error::InvalidMessage(InvalidContentType): the peer's reply is not TLS

Qué significa

rustls leyó el primer byte de la respuesta del servidor como el tipo de contenido de un registro TLS y encontró un valor que ningún registro TLS puede tener. El otro extremo no habla TLS: normalmente es un servidor HTTP que responde «HTTP/1.1 …» en un puerto al que se accedió con https://, un servidor gRPC en texto plano o un proxy que espera HTTP sin cifrar.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Averiguar qué protocolo habla el puerto

    Si responde HTTP sin cifrar, usa http:// o el puerto TLS del servidor.

    bash
    curl -si http://127.0.0.1:8080/ | head -1      # plain HTTP answers -> use http:// or the TLS port
  2. 2.

    Ajustar el esquema del endpoint al servidor

    Usa endpoints http:// para los servidores gRPC en texto plano de redes de confianza y, en los demás casos, https:// con configuración TLS.

    rust
    // tonic: use an http:// endpoint for plaintext servers, https:// + TLS config for TLS servers
    let channel = tonic::transport::Channel::from_static("http://127.0.0.1:50051").connect().await?;

Errores relacionados

Explorar toda la base de datos de errores de firma