package main import ( "crypto/tls" "crypto/x509" "path" "path/filepath" ) func scanFiles(dir string) ([]tls.Certificate, error) { var certs []tls.Certificate keys, err := filepath.Glob(path.Join(dir, "private", "*.key")) if err != nil { return nil, err } for _, k := range keys { c := filepath.Join(dir, "certs", filepath.Base(k[:len(k)-4])+".pem") crt, err := tls.LoadX509KeyPair(c, k) if err != nil { continue } crt.Leaf, err = x509.ParseCertificate(crt.Certificate[0]) if err != nil { return nil, err } certs = append(certs, crt) } return certs, nil }