func StartHTTPSServer()

in client/testserver/testserver.go [99:132]


func StartHTTPSServer(t *testing.T, handlers []TestRequestHandler, clientCAPath string) string {
	t.Helper()

	testRoot := testhelper.PrepareTestRootDir(t)

	crt := path.Join(testRoot, "certs/valid/server.crt")
	key := path.Join(testRoot, "certs/valid/server.key")

	server := httptest.NewUnstartedServer(buildHandler(handlers))
	cer, err := tls.LoadX509KeyPair(crt, key)
	require.NoError(t, err)

	server.TLS = &tls.Config{
		Certificates: []tls.Certificate{cer},
		MinVersion:   tls.VersionTLS12,
	}

	if clientCAPath != "" {
		caCert, err := os.ReadFile(clientCAPath)
		require.NoError(t, err)

		caCertPool := x509.NewCertPool()
		caCertPool.AppendCertsFromPEM(caCert)

		server.TLS.ClientCAs = caCertPool
		server.TLS.ClientAuth = tls.RequireAndVerifyClientCert
	}

	server.StartTLS()

	t.Cleanup(func() { server.Close() })

	return server.URL
}