慕田峪9158850
只要完成 TLS 的握手,您就可以在Conn.HandShake之后通过tls Conn.ConnectionState转储客户端证书。以下是代码片段 config := tls.Config{ Certificates: []tls.Certificate{yourServerCert}, ClientAuth: tls.RequestClientCert, InsecureSkipVerify: true, } listener, err := tls.Listen("tcp", "localhost:8080", &config) if err != nil { fmt.Println("server: listen err %+v \n", err) return } conn, err := listener.Accept() if err != nil { fmt.Println("server: accept err %+v \n", err) return } tlsConn, ok := conn.(*tls.Conn) if !ok { fmt.Println("server: invalid tls connection") return } if err := tlsConn.Handshake(); err != nil { fmt.Println("server: client handshake err %+v \n", err) return } state := tlsConn.ConnectionState() for _, v := range state.PeerCertificates { fmt.Printf("server: remote client cert %+v \n", v) }