tls.go 856 B

12345678910111213141516171819202122232425262728293031323334
  1. package util
  2. import (
  3. "crypto/tls"
  4. "github.com/gogf/gf/os/glog"
  5. "io/ioutil"
  6. "net"
  7. "golang.org/x/net/http2"
  8. )
  9. //GetTLSConfig 用于处理从证书凭证文件(PEM),最终获取tls.Config作为HTTP2的使用参数
  10. func GetTLSConfig(certPemPath, certKeyPath string) *tls.Config {
  11. var certKeyPair *tls.Certificate
  12. cert, _ := ioutil.ReadFile(certPemPath)
  13. key, _ := ioutil.ReadFile(certKeyPath)
  14. //从一对PEM编码的数据中解析公钥/私钥对。成功则返回公钥/私钥对
  15. pair, err := tls.X509KeyPair(cert, key)
  16. if err != nil {
  17. glog.Error("TLS KeyPair err", err)
  18. }
  19. certKeyPair = &pair
  20. return &tls.Config{
  21. Certificates: []tls.Certificate{*certKeyPair},
  22. NextProtos: []string{http2.NextProtoTLS},
  23. }
  24. }
  25. func NewTLSListener(inner net.Listener, config *tls.Config) net.Listener {
  26. return tls.NewListener(inner, config)
  27. }