Hi, i will like to follow this with you but i would like to know what's client certificate
On Thursday, July 17, 2025 at 5:06:25 AM UTC Vinnie Vertongen wrote: > The `crypto/tls` library will not configure the client certificate if the > signing certificate authority is not present in the list provided by the > server in `CertificateRequest`. The current implementation causes the > `remote error: tls: certificate required` error making debugging the > underlying CA issue difficult. > > Additional notes: > > 1. The library code in handshake.go intentionally does not configure the > certificate if there is no match > 2. The error is as expected `remote error: tls: unknown certificate > authority` if you downgrade the client to TLS v1.2 > 3. The behaviour seems intentional and so I didn't want to raise a bug > ticket - but I think this needs an improvement (Config option?) to assist > in debugging - it's confusing without reading the library code to > understand the issue > > > ``` > package main > > import ( > "crypto/tls" > "fmt" > "log" > "net/http" > ) > > func main() { > clientCert, err := tls.LoadX509KeyPair("certificate", "key") > if err != nil { > log.Fatalf("Failed to load client certificate: %v", err) > } > > tlsConfig := &tls.Config{ > Certificates: []tls.Certificate{clientCert}, > ServerName: "localhost", > } > client := &http.Client{ > Transport: &http.Transport{ > TLSClientConfig: tlsConfig, > }, > } > resp, err := client.Get("https://localhost:8443") > if err != nil { > log.Printf("TLS Error: %v", err) > return > } > > fmt.Printf("%v\n", resp.Status) > } > ``` > > Example HAProxy configuration: > ``` > global > daemon > > defaults > mode http > timeout connect 5000ms > timeout client 50000ms > timeout server 50000ms > > frontend mtls_frontend > # Client certificate CA not present (remote error: tls: certificate > required) > bind *:8443 ssl crt /etc/ssl/certs/haproxy-server.pem verify required > ca-file /etc/ssl/certs/USERTrust_RSA_Certification_Authority.pem > # Client certificate CA present (success) > #bind *:8443 ssl crt /etc/ssl/certs/haproxy-server.pem verify required > ca-file /etc/ssl/certs/chain.pem > default_backend web_servers > > backend web_servers > server web1 127.0.0.1:8080 check > ``` > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/c47b913b-c43f-4eec-bfbf-c919f74334dfn%40googlegroups.com.