Maison > développement back-end > Golang > le corps du texte

Erreur : données non cryptées reçues après une requête SSL

WBOY
Libérer: 2024-02-08 23:00:35
avant
633 Les gens l'ont consulté

错误:SSL 请求后收到未加密的数据

L'éditeur PHP Baicao rencontre parfois un message d'erreur courant lors du développement du réseau : "Erreur : données non chiffrées reçues après requête SSL". Ce message d'erreur apparaît généralement lors de l'utilisation du protocole HTTPS pour la transmission de données, indiquant que les données ne sont pas cryptées. Ce problème pourrait entraîner une fuite ou une falsification de données, il doit donc être résolu rapidement. Dans cet article, nous présenterons en détail la cause et la solution de cette erreur pour aider les développeurs à résoudre ce problème en douceur.

Contenu de la question

J'ai ouvert une connexion tcp au serveur de base de données en utilisant la méthode suivante :

conn, err := net.dial("tcp", "localhost:5432") J'ai réussi après avoir exécuté ce code :

_, err = conn.Write([]byte(query))
    if err != nil {
        fmt.Printf("Query failed: %v\n", err)
        return


    // Read the response and print the result in table view
    buf := make([]byte, 50000)
    n, err := conn.Read(buf)
    if err != nil {
        fmt.Printf("Failed to read response: %v\n", err)
        return
    }
    fmt.Printf("Response received: %s\n", string(buf[:n]))
Copier après la connexion

Il imprime : Réponse reçue : n

Le fichier journal du serveur indique :

2023-02-22 22:59:49.834 pkt [54802] fatal: ssl 请求后收到未加密的数据

2023-02-22 22:59:49.834 pkt [54802] 详细信息:这可能是客户端软件错误或尝试中间人攻击的证据。

Solution de contournement

Par défaut, le serveur postgresql exige que tous ses clients utilisent des connexions cryptées SSL, il rejettera donc toujours votre demande.

À des fins de test/développement et en réalisant que votre connexion ne sera pas sécurisée, vous pouvez utiliser quelques astuces pour résoudre ce problème :

  1. Créez une connexion au package tls et autorisez-le à ignorer la vérification du certificat.
tlsconfig := &tls.config{
    insecureskipverify: true,
  }
        
  conn, err := tls.dial("tcp", "localhost:5432", tlsconfig)
Copier après la connexion
  • Toujours utiliser database/sql 包,它为您抽象了所有这些数据库供应商的具体情况。将 sslmode réglé sur désactivé si possible.
  • connstr := "user=myuser password=mypassword dbname=mydb host=localhost sslmode=disable"
      db, err := sql.open("postgres", connstr)
      if err != nil {
          fmt.printf("failed to connect to server: %v\n", err)
          return
      }
      defer db.close()
    Copier après la connexion
  • Installez le fichier postgresql data 目录中找到 pg_hba.conf et ajoutez la ligne suivante pour toujours faire confiance à votre localhost :
  • host    postgres   postgres   127.0.0.1/32    trust
    Copier après la connexion

    Supposons que le nom d'utilisateur soit postgres

    1. Installez data 目录中找到 postgres.conf 文件,并将 ssl 参数设置为 off dans postgresql.

    Gardez à l’esprit que toutes ces configurations rendront toujours votre connexion non sécurisée et vulnérable aux attaques.

    Pour créer correctement une connexion SSL, vous devez configurer un certificat. Cet aperçu devrait aider.

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    source:stackoverflow.com
    Déclaration de ce site Web
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
    Tutoriels populaires
    Plus>
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal