chore: add config disable http error log
This commit is contained in:
		
							
								
								
									
										119
									
								
								xtest/tls/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										119
									
								
								xtest/tls/main.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,119 @@ | ||||
| package main | ||||
|  | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"crypto/rand" | ||||
| 	"crypto/rsa" | ||||
| 	"crypto/tls" | ||||
| 	"crypto/x509" | ||||
| 	"crypto/x509/pkix" | ||||
| 	"encoding/pem" | ||||
| 	"github.com/loveuer/nf" | ||||
| 	"log" | ||||
| 	"math/big" | ||||
| 	"net" | ||||
| 	"time" | ||||
| ) | ||||
|  | ||||
| func main() { | ||||
| 	app := nf.New(nf.Config{ | ||||
| 		DisableHttpErrorLog: true, | ||||
| 	}) | ||||
|  | ||||
| 	app.Get("/hello/:name", func(c *nf.Ctx) error { | ||||
| 		return c.SendString("hello, " + c.Param("name")) | ||||
| 	}) | ||||
|  | ||||
| 	st, _, _ := GenerateTlsConfig() | ||||
| 	log.Fatal(app.RunTLS(":443", st)) | ||||
| } | ||||
|  | ||||
| func GenerateTlsConfig() (serverTLSConf *tls.Config, clientTLSConf *tls.Config, err error) { | ||||
| 	ca := &x509.Certificate{ | ||||
| 		SerialNumber: big.NewInt(2019), | ||||
| 		Subject: pkix.Name{ | ||||
| 			Organization:  []string{"Company, INC."}, | ||||
| 			Country:       []string{"US"}, | ||||
| 			Province:      []string{""}, | ||||
| 			Locality:      []string{"San Francisco"}, | ||||
| 			StreetAddress: []string{"Golden Gate Bridge"}, | ||||
| 			PostalCode:    []string{"94016"}, | ||||
| 		}, | ||||
| 		NotBefore:             time.Now(), | ||||
| 		NotAfter:              time.Now().AddDate(99, 0, 0), | ||||
| 		IsCA:                  true, | ||||
| 		ExtKeyUsage:           []x509.ExtKeyUsage{x509.ExtKeyUsageClientAuth, x509.ExtKeyUsageServerAuth}, | ||||
| 		KeyUsage:              x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign, | ||||
| 		BasicConstraintsValid: true, | ||||
| 	} | ||||
| 	// create our private and public key | ||||
| 	caPrivKey, err := rsa.GenerateKey(rand.Reader, 4096) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 	// create the CA | ||||
| 	caBytes, err := x509.CreateCertificate(rand.Reader, ca, ca, &caPrivKey.PublicKey, caPrivKey) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 	// pem encode | ||||
| 	caPEM := new(bytes.Buffer) | ||||
| 	pem.Encode(caPEM, &pem.Block{ | ||||
| 		Type:  "CERTIFICATE", | ||||
| 		Bytes: caBytes, | ||||
| 	}) | ||||
| 	caPrivKeyPEM := new(bytes.Buffer) | ||||
| 	pem.Encode(caPrivKeyPEM, &pem.Block{ | ||||
| 		Type:  "RSA PRIVATE KEY", | ||||
| 		Bytes: x509.MarshalPKCS1PrivateKey(caPrivKey), | ||||
| 	}) | ||||
| 	// set up our server certificate | ||||
| 	cert := &x509.Certificate{ | ||||
| 		SerialNumber: big.NewInt(2019), | ||||
| 		Subject: pkix.Name{ | ||||
| 			Organization:  []string{"Company, INC."}, | ||||
| 			Country:       []string{"US"}, | ||||
| 			Province:      []string{""}, | ||||
| 			Locality:      []string{"San Francisco"}, | ||||
| 			StreetAddress: []string{"Golden Gate Bridge"}, | ||||
| 			PostalCode:    []string{"94016"}, | ||||
| 		}, | ||||
| 		IPAddresses:  []net.IP{net.IPv4(127, 0, 0, 1), net.IPv6loopback}, | ||||
| 		NotBefore:    time.Now(), | ||||
| 		NotAfter:     time.Now().AddDate(1, 0, 0), | ||||
| 		SubjectKeyId: []byte{1, 2, 3, 4, 6}, | ||||
| 		ExtKeyUsage:  []x509.ExtKeyUsage{x509.ExtKeyUsageClientAuth, x509.ExtKeyUsageServerAuth}, | ||||
| 		KeyUsage:     x509.KeyUsageDigitalSignature, | ||||
| 	} | ||||
| 	certPrivKey, err := rsa.GenerateKey(rand.Reader, 4096) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 	certBytes, err := x509.CreateCertificate(rand.Reader, cert, ca, &certPrivKey.PublicKey, caPrivKey) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 	certPEM := new(bytes.Buffer) | ||||
| 	pem.Encode(certPEM, &pem.Block{ | ||||
| 		Type:  "CERTIFICATE", | ||||
| 		Bytes: certBytes, | ||||
| 	}) | ||||
| 	certPrivKeyPEM := new(bytes.Buffer) | ||||
| 	pem.Encode(certPrivKeyPEM, &pem.Block{ | ||||
| 		Type:  "RSA PRIVATE KEY", | ||||
| 		Bytes: x509.MarshalPKCS1PrivateKey(certPrivKey), | ||||
| 	}) | ||||
| 	serverCert, err := tls.X509KeyPair(certPEM.Bytes(), certPrivKeyPEM.Bytes()) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 	serverTLSConf = &tls.Config{ | ||||
| 		Certificates: []tls.Certificate{serverCert}, | ||||
| 	} | ||||
| 	certpool := x509.NewCertPool() | ||||
| 	certpool.AppendCertsFromPEM(caPEM.Bytes()) | ||||
| 	clientTLSConf = &tls.Config{ | ||||
| 		RootCAs: certpool, | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
		Reference in New Issue
	
	Block a user