Search code examples
sql-serverdatabasegogo-gin

Golang : "Err TLS Handshake failed: tls: server selected unsupported protocol version 301" when trying to connect to sql server (diferent host)


This my code when try to connect sql server:

https://i.sstatic.net/2nBzN.png

connString := fmt.Sprintf("server=%s;user id=%s;password=%s¡port=%s;databases=%s", server, user, password, port, database)

// if there is an error opening the connection, handle it
if err != nil {
  // simply print the error to the console 
  fmt.Println("Err", err.Error())
}

err.Error()) // returna nit on error

defer db.Close()

results, err := db.query("SELECT employee_id, display_name from `person_tbl`")

if err != nil {
  fmt.Println("Err", err.Error())
}
fmt.Print (results)

When i try to connect to sql server, i get error message "Err TLS Handshake failed: tls: server selected unsupported protocol version 301" I have tried changing TLS to version 1.2 on the server and still getting the same error message. Do I need to reset my TLS again or do I need to add code to my Go-lang code?


Solution

  • "unsupported protocol version" 301 means an insecure TLS version (1.0), selected by the server. (and 301: permanently redirected)

    Make sure the Sql-server you are connecting to supports a recent TLS version (like a TLS 1.2 for a Microsoft SQL Server for instance).

    I have tried changing TLS to version 1.2 on the server

    Double-check this change was effective:

    • A) TLS1.0 --> curl -v -s --tlsv1.0 https://<instance-name> -o /dev/null/ 2>&1
    • B) TLS1.1 --> curl -v -s --tlsv1.1 https://<instance-name> -o /dev/null/ 2>&1
    • C) TLS1.2 --> curl -v -s https://<instance-name> -o /dev/null/ 2>&1