Maison  >  Article  >  développement back-end  >  Erreur : données non cryptées reçues après une requête SSL

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

WBOY
WBOYavant
2024-02-08 23:00:35569parcourir

错误: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]))

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)
  1. 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()
  1. 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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer