package util import ( "crypto/tls" "github.com/gogf/gf/os/glog" "io/ioutil" "net" "golang.org/x/net/http2" ) //GetTLSConfig 用于处理从证书凭证文件(PEM),最终获取tls.Config作为HTTP2的使用参数 func GetTLSConfig(certPemPath, certKeyPath string) *tls.Config { var certKeyPair *tls.Certificate cert, _ := ioutil.ReadFile(certPemPath) key, _ := ioutil.ReadFile(certKeyPath) //从一对PEM编码的数据中解析公钥/私钥对。成功则返回公钥/私钥对 pair, err := tls.X509KeyPair(cert, key) if err != nil { glog.Error("TLS KeyPair err", err) } certKeyPair = &pair return &tls.Config{ Certificates: []tls.Certificate{*certKeyPair}, NextProtos: []string{http2.NextProtoTLS}, } } func NewTLSListener(inner net.Listener, config *tls.Config) net.Listener { return tls.NewListener(inner, config) }