server.go
func (s *Server) UseTLS(cert, privKey, clientCACert []byte) error {
	tlsCert, err := tls.X509KeyPair(cert, privKey)
	if err != nil {
		return fmt.Errorf("failed to parse the server certificate or the private key: %v", err)
	}

	c, _ := pem.Decode(cert)
	if tlsCert.Leaf, err = x509.ParseCertificate(c.Bytes); err != nil {
		return fmt.Errorf("failed to parse the server certificate: %v", err)
	}

	pool := x509.NewCertPool()
	ok := pool.AppendCertsFromPEM(clientCACert)
	if !ok {
		return fmt.Errorf("failed to parse the CA certificate: %v", err)
	}

	s.wsConfig.TlsConfig = &tls.Config{
		Certificates: []tls.Certificate{tlsCert},
		ClientCAs:    pool,
		ClientAuth:   tls.VerifyClientCertIfGiven,
	}

	return nil
}
func (s *Server) UseTLS(cert, privKey, clientCACert []byte) error {
	tlsCert, err := tls.X509KeyPair(cert, privKey)
	if err != nil {
		return fmt.Errorf("failed to parse the server certificate or the private key: %v", err)
	}

	c, _ := pem.Decode(cert)
	if tlsCert.Leaf, err = x509.ParseCertificate(c.Bytes); err != nil {
		return fmt.Errorf("failed to parse the server certificate: %v", err)
	}

	pool := x509.NewCertPool()
	ok := pool.AppendCertsFromPEM(clientCACert)
	if !ok {
		return fmt.Errorf("failed to parse the CA certificate: %v", err)
	}

	s.wsConfig.TlsConfig = &tls.Config{
		Certificates: []tls.Certificate{tlsCert},
		ClientCAs:    pool,
		ClientAuth:   tls.VerifyClientCertIfGiven,
	}

	return nil
}
func ( s * Server ) UseTLS ( cert , privKey , clientCACert [ ] byte ) error { tlsCert , err := tls . X509KeyPair ( cert , privKey ) if err != nil { return fmt . Errorf ( " " , err ) } c , _ := pem . Decode ( cert ) if tlsCert . Leaf , err = x509 . ParseCertificate ( c . Bytes ) ; err != nil { return fmt . Errorf ( " " , err ) } pool := x509 . NewCertPool ( ) ok := pool . AppendCertsFromPEM ( clientCACert ) if ! ok { return fmt . Errorf ( " " , err ) } s . wsConfig . TlsConfig = & tls . Config { Certificates : [ ] tls . Certificate { tlsCert } , ClientCAs : pool , ClientAuth : tls . VerifyClientCertIfGiven , } return nil }
// UseTLS enables Transport Layer Security for the connections.
// cert, key = Server certificate/private key pair.
// clientCACert = Optional certificate for verifying client certificates.
// All certificates/private keys are in PEM encoded X.509 format.
UseTLS enables Transport Layer Security for the connections . cert key = Server certificate / private key pair . clientCACert = Optional certificate for verifying client certificates . All certificates / private keys are in PEM encoded X . 509 format .