portainer/api/crypto/tls.go

27 lines
622 B
Go
Raw Normal View History

package crypto
import (
"crypto/tls"
"crypto/x509"
"io/ioutil"
)
// CreateTLSConfiguration initializes a tls.Config using a CA certificate, a certificate and a key
func CreateTLSConfiguration(caCertPath, certPath, keyPath string) (*tls.Config, error) {
cert, err := tls.LoadX509KeyPair(certPath, keyPath)
if err != nil {
2016-12-18 05:21:29 +00:00
return nil, err
}
caCert, err := ioutil.ReadFile(caCertPath)
if err != nil {
2016-12-18 05:21:29 +00:00
return nil, err
}
caCertPool := x509.NewCertPool()
caCertPool.AppendCertsFromPEM(caCert)
2016-12-18 05:21:29 +00:00
config := &tls.Config{
Certificates: []tls.Certificate{cert},
RootCAs: caCertPool,
}
2016-12-18 05:21:29 +00:00
return config, nil
}