Ralat: Data tidak disulitkan diterima selepas permintaan SSL

WBOY
Lepaskan: 2024-02-08 23:00:35
ke hadapan
596 orang telah melayarinya

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

Editor PHP Baicao kadangkala menghadapi mesej ralat biasa semasa pembangunan rangkaian: "Ralat: Data tidak disulitkan diterima selepas permintaan SSL". Mesej ralat ini biasanya muncul apabila menggunakan protokol HTTPS untuk penghantaran data, menunjukkan bahawa data tidak disulitkan. Isu ini boleh menyebabkan kebocoran data atau gangguan, jadi ia perlu ditangani dengan segera. Dalam artikel ini, kami akan memperkenalkan punca dan penyelesaian ralat ini secara terperinci untuk membantu pembangun menyelesaikan masalah ini dengan lancar.

Kandungan soalan

Saya telah membuka sambungan tcp ke pelayan pangkalan data menggunakan kaedah berikut:

conn, err := net.dial("tcp", "localhost:5432") Saya berjaya selepas menjalankan kod ini:

_, 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]))
Salin selepas log masuk

Ia mencetak: Balasan diterima: n

Fail log pelayan menunjukkan:

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

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

Penyelesaian

Secara lalai, pelayan postgresql memerlukan semua pelanggannya menggunakan sambungan yang disulitkan ssl, jadi ia akan sentiasa menolak permintaan anda.

Untuk tujuan ujian/pembangunan dan menyedari bahawa sambungan anda tidak akan selamat, terdapat beberapa helah yang boleh anda gunakan untuk membetulkannya:

  1. Buat sambungan ke pakej tls dan benarkan ia melangkau pengesahan sijil.
tlsconfig := &tls.config{
    insecureskipverify: true,
  }
        
  conn, err := tls.dial("tcp", "localhost:5432", tlsconfig)
Salin selepas log masuk
  • Sentiasa gunakan database/sql 包,它为您抽象了所有这些数据库供应商的具体情况。将 sslmode tetapkan kepada orang kurang upaya jika boleh.
  • 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()
    Salin selepas log masuk
  • Pasang fail postgresql data 目录中找到 pg_hba.conf dan tambah baris berikut untuk sentiasa mempercayai localhost anda:
  • host    postgres   postgres   127.0.0.1/32    trust
    Salin selepas log masuk

    Andaikan nama pengguna ialah postgres

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

    Perlu diingat bahawa semua konfigurasi ini masih akan menjadikan sambungan anda tidak selamat dan terdedah kepada serangan.

    Untuk membuat sambungan ssl dengan betul, anda perlu menyediakan sijil. Intisari ini sepatutnya membantu.

    Atas ialah kandungan terperinci Ralat: Data tidak disulitkan diterima selepas permintaan SSL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    sumber:stackoverflow.com
    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!