tls.go 681 B

12345678910111213141516171819202122232425262728
  1. package client
  2. import (
  3. "crypto/tls"
  4. "crypto/x509"
  5. )
  6. // NewClientTLSConfig: generate TLS config for client side
  7. // if insecureSkipVerify is set to true, serverName will not be validated
  8. func NewClientTLSConfig(caPem, certPem, keyPem []byte, insecureSkipVerify bool, serverName string) *tls.Config {
  9. pool := x509.NewCertPool()
  10. if !pool.AppendCertsFromPEM(caPem) {
  11. panic("failed to add ca PEM")
  12. }
  13. cert, err := tls.X509KeyPair(certPem, keyPem)
  14. if err != nil {
  15. panic(err)
  16. }
  17. config := &tls.Config{
  18. Certificates: []tls.Certificate{cert},
  19. RootCAs: pool,
  20. InsecureSkipVerify: insecureSkipVerify,
  21. ServerName: serverName,
  22. }
  23. return config
  24. }