mysql
mysql copied to clipboard
Error `tls: handshake failure` on try to connect to mysql 5.7 with SSL client certs
Issue description
Failed to connect to mysql server version 5.7.44 using SSL client certificates. An error is returned. Everything works correctly with mysql server version 8.4.2.
Example code
rootCertPool := x509.NewCertPool()
pem, err := os.ReadFile("certs/ca-cert.pem")
if err != nil {
log.Fatal(err)
}
if ok := rootCertPool.AppendCertsFromPEM(pem); !ok {
log.Fatal("Failed to append PEM.")
}
clientCert := make([]tls.Certificate, 0, 1)
certs, err := tls.LoadX509KeyPair("certs/client-cert.pem", "certs/client-key.pem")
if err != nil {
log.Fatal(err)
}
clientCert = append(clientCert, certs)
mysql.RegisterTLSConfig("custom", &tls.Config{
RootCAs: rootCertPool,
Certificates: clientCert,
InsecureSkipVerify: true,
})
db, err := sql.Open("mysql", "user@tcp(localhost:3306)/test?tls=custom")
if err != nil {
log.Fatal(err)
}
Error log
MySQL connect error: remote error: tls: handshake failure
Configuration
v1.8.1
Go version: go version go1.22.6 darwin/arm64
Server version: MySQL 5.7.44
Server OS: oraclelinux7