Aller au contenu
ecdsa.com
rustls (via reqwest, ureq, tonic)Rust

Message d’erreur

received corrupt message of type InvalidContentType

reqwest l’affiche à la fin de « error sending request for url (…): client error (Connect): received corrupt message of type InvalidContentType », ureq sous la forme « io: received corrupt message of type InvalidContentType ». Les clients fondés sur OpenSSL signalent la même situation par « wrong version number ».

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

Ce que cela signifie

rustls a lu le premier octet de la réponse du serveur comme le type de contenu d’un enregistrement TLS et y a trouvé une valeur qu’aucun enregistrement TLS ne peut avoir. L’autre partie ne parle pas TLS : il s’agit typiquement d’un serveur HTTP qui répond « HTTP/1.1 … » sur un port atteint avec https://, d’un serveur gRPC en clair ou d’un proxy qui attend du HTTP en clair.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Déterminer quel protocole parle le port

    Si c’est du HTTP en clair qui répond, utilisez http:// ou le port TLS du serveur.

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

    Adapter le schéma du point de terminaison au serveur

    Utilisez des points de terminaison http:// pour les serveurs gRPC en clair sur des réseaux de confiance, et https:// avec une configuration TLS dans les autres cas.

    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?;

Erreurs associées

Parcourir toute la base de données des erreurs de signature