Heim >Backend-Entwicklung >Golang >Fehler: Nach SSL-Anfrage wurden unverschlüsselte Daten empfangen
Der PHP-Editor Baicao stößt während der Netzwerkentwicklung manchmal auf eine häufige Fehlermeldung: „Fehler: Nach SSL-Anfrage empfangene unverschlüsselte Daten“. Diese Fehlermeldung erscheint normalerweise bei Verwendung des HTTPS-Protokolls zur Datenübertragung und weist darauf hin, dass die Daten nicht verschlüsselt sind. Dieses Problem könnte zu Datenlecks oder -manipulationen führen und muss daher umgehend behoben werden. In diesem Artikel stellen wir die Ursache und Lösung dieses Fehlers im Detail vor, um Entwicklern bei der reibungslosen Lösung dieses Problems zu helfen.
Ich habe mit der folgenden Methode eine TCP-Verbindung zum Datenbankserver geöffnet:
conn, err := net.dial("tcp", "localhost:5432")
Es ist mir gelungen, nachdem ich diesen Code ausgeführt habe:
_, 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]))
Es wird gedruckt: Antwort erhalten: n
Die Protokolldatei des Servers zeigt:
2023-02-22 22:59:49.834 pkt [54802] fatal: ssl 请求后收到未加密的数据
2023-02-22 22:59:49.834 pkt [54802] 详细信息:这可能是客户端软件错误或尝试中间人攻击的证据。
Standardmäßig verlangt der Postgresql-Server, dass alle seine Clients SSL-verschlüsselte Verbindungen verwenden, sodass er Ihre Anfrage immer ablehnt.
Zu Test-/Entwicklungszwecken und um zu erkennen, dass Ihre Verbindung nicht sicher ist, gibt es einige Tricks, mit denen Sie das Problem beheben können:
tlsconfig := &tls.config{ insecureskipverify: true, } conn, err := tls.dial("tcp", "localhost:5432", tlsconfig)
database/sql
包,它为您抽象了所有这些数据库供应商的具体情况。将 sslmode
wenn möglich auf deaktiviert stellen. 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()
data
目录中找到 pg_hba.conf
und fügen Sie die folgende Zeile hinzu, um Ihrem lokalen Host immer zu vertrauen: host postgres postgres 127.0.0.1/32 trust
Angenommen, der Benutzername lautet postgres
data
目录中找到 postgres.conf
文件,并将 ssl
参数设置为 off
in Postgresql. Bedenken Sie, dass all diese Konfigurationen Ihre Verbindung immer noch unsicher und anfällig für Angriffe machen.
Um eine SSL-Verbindung korrekt herzustellen, müssen Sie ein Zertifikat einrichten. Dieses Wesentliche sollte helfen.
Das obige ist der detaillierte Inhalt vonFehler: Nach SSL-Anfrage wurden unverschlüsselte Daten empfangen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!