diff --git a/config.yaml.sample b/config.yaml.sample
index f89eed8f9c48a1f22636edc31195bff0aeb8698d..728fa2d92067de3f32df1f4a18c3d13613766734 100644
--- a/config.yaml.sample
+++ b/config.yaml.sample
@@ -6,6 +6,8 @@
 dataStorageUrl: localhost:7777
 grpcListenAddress: localhost:7877
 restListenAddress: localhost:7878
+# This one using by rest-gateway. Must contain the same domain name with issued certificate
+grpcURL: key-storage-agent:7877
 
 # VIAM Variables
 viamUUID: viam-system
diff --git a/config/configs.go b/config/configs.go
index 9f835140f2a576ff2d84b12358ac7c58e70afe4e..aa5f7c64087ea1a9b888fbc5ff6b066ee19bb9cc 100644
--- a/config/configs.go
+++ b/config/configs.go
@@ -29,6 +29,7 @@ var MaxMessageSize int
 
 var GrpcListenAddress string
 var RestListenAddress string
+var GrpcURL string
 var DataStorageUrl string
 var EntitiesManagerUrl string
 var CertDir string
@@ -41,6 +42,7 @@ func SetConfigValues(configFile, etcdURL string) {
 	viper.SetDefault("restListenAddress", "localhost:7878")
 	viper.SetDefault("dataStorageUrl", "localhost:7777")
 	viper.SetDefault("entitiesManagerUrl", "localhost:7779")
+	viper.SetDefault("grpcURL", "key-storage-agent:7877")
 
 	viper.SetDefault("viamUUID", "viam-system")
 	viper.SetDefault("viamSession", "viam-session")
@@ -122,6 +124,7 @@ func SetConfigValues(configFile, etcdURL string) {
 	}
 
 	GrpcListenAddress = viper.GetString("grpcListenAddress")
+	GrpcURL = viper.GetString("grpcURL")
 	RestListenAddress = viper.GetString("restListenAddress")
 
 	DataStorageUrl = viper.GetString("dataStorageUrl")
diff --git a/main.go b/main.go
index 4b937e1f6de264df8ccf987299d4beeff654063a..75743bbbae377146ea5eabfb33d775219a20e899 100644
--- a/main.go
+++ b/main.go
@@ -42,6 +42,7 @@ func main() {
 
 	grpcAddress := config.GrpcListenAddress
 	restAddress := config.RestListenAddress
+	grpcURL := config.GrpcURL
 	dataStorageAddress := config.DataStorageUrl
 	certPem := config.CertificatePEM
 	keyPem := config.PrivateKeyPEM
@@ -62,7 +63,7 @@ func main() {
 
 	// fire the REST server in a goroutine
 	go func() {
-		err := server.StartRESTServer(restAddress, grpcAddress, certPem)
+		err := server.StartRESTServer(restAddress, grpcURL, certPem, keyPem)
 		if err != nil {
 			log.Fatalf("failed to start gRPC server: %s", err)
 		}
diff --git a/server/server.go b/server/server.go
index 8c00656f1d30efb20c0b78c099531acc1a3b70ef..8ee39c1237cb2009f6de628f778ba72709a427b7 100644
--- a/server/server.go
+++ b/server/server.go
@@ -54,6 +54,9 @@ func credMatcher(headerName string) (mdName string, ok bool) {
 	if headerName == "Session" {
 		return headerName, true
 	}
+	if headerName == "Uuid" {
+		return headerName, true
+	}
 	return "", false
 }
 
@@ -177,7 +180,8 @@ func StartGRPCServer(address string, certPEM, privateKeyPEM, caCertPEM, vereignC
 	return nil
 }
 
-func StartRESTServer(address, grpcAddress string, certPEM []byte) error {
+func StartRESTServer(address, grpcURL string, certPEM, keyPEM []byte) error {
+	log.Println("grpcAddress: ", grpcURL)
 	ctx := context.Background()
 	ctx, cancel := context.WithCancel(ctx)
 	defer cancel()
@@ -200,14 +204,31 @@ func StartRESTServer(address, grpcAddress string, certPEM []byte) error {
 	opts := []grpc.DialOption{grpc.WithTransportCredentials(creds)}
 
 	// Register RedisStorageServer
-	err = api.RegisterKeyStorageHandlerFromEndpoint(ctx, mux, grpcAddress, opts)
+	err = api.RegisterKeyStorageHandlerFromEndpoint(ctx, mux, grpcURL, opts)
 	if err != nil {
 		log.Printf("Error: %v", err)
 		return fmt.Errorf("could not register service RedisStorageServer: %s", err)
 	}
 
-	log.Printf("starting HTTP/1.1 REST server on %s", address)
-	http.ListenAndServe(address, mux)
+	// server certificate
+	certificate, err := tls.X509KeyPair(certPEM, keyPEM)
+	if err != nil {
+		log.Printf("Error: %v", err)
+		return fmt.Errorf("could not load server key pair: %s", err)
+	}
+
+	serverTLSConfig := &tls.Config{
+		Certificates: []tls.Certificate{certificate},
+	}
+
+	tlsServer := &http.Server{
+		Addr: address,
+		Handler: mux,
+		TLSConfig: serverTLSConfig,
+	}
+
+	log.Printf("starting HTTP/1.1 REST server on %s", address)	
+	tlsServer.ListenAndServeTLS("","")
 
 	return nil
 }