diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index c77ba812240f8a8c87dca8b14cb2f9eca24b45af..cd96c21d9c3159fc769342210740624e6090d1d2 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -10,9 +10,9 @@
         },
         "features": {
             "ghcr.io/devcontainers/features/go:1": {
-                    "version": "1.22"
+                    "version": "1.23"
                 },
-            "ghcr.io/devcontainers/features/docker-in-docker:2.11": {
+            "ghcr.io/devcontainers/features/docker-in-docker:2.12": {
                 "version": "latest",
                 "dockerDashComposeVersion": "v2"
                 }
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 99e2ea439a09001c9e5b297b1a2415bf31bdbe1a..0fb4d6b93505e4c94c767147e4bab50c4c031970 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -9,8 +9,8 @@ variables:
     IMAGE_PATH: "${CI_REGISTRY_IMAGE}"
     DQ_REGISTRY_PATH: "registry.code.fbi.h-da.de/demoquandt/qkdn-controller"
     DQ_QUANT_INTEGRATION_REGISTRY_PATH: $DQ_REGISTRY_PATH/quant-integration
-    GOLANG_VERSION: "1.22"
-    GOLANG_MINOR_VERSION: "${GOLANG_VERSION}.6"
+    GOLANG_VERSION: "1.23"
+    GOLANG_MINOR_VERSION: "${GOLANG_VERSION}.0"
     DOCKER_TLS_CERTDIR: "/certs"
 
 
@@ -141,7 +141,7 @@ build-etsi14module-latest:
 # Analyze stage
 lint:
     stage: analyze
-    image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/golangci/golangci-lint:v1.60.1-alpine
+    image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/golangci/golangci-lint:v1.61.0-alpine
     script:
         - apk add --update make
         - echo "machine code.fbi.h-da.de login ${GITLAB_LOGIN} password ${GITLAB_TOKEN}" > ~/.netrc
diff --git a/.golangci.yml b/.golangci.yml
index 7fbcaa157a1e8f81e777bef54bd023887cc6a10b..9e9bf652f646af60a711f796f3cf1172da16cade 100644
--- a/.golangci.yml
+++ b/.golangci.yml
@@ -1,5 +1,5 @@
 run:
-    go: "1.22"
+    go: "1.23"
     concurrency: 8
     timeout: 20m
     issues-exit-code: 1
@@ -53,7 +53,7 @@ linters:
         - bidichk
         - durationcheck
         - errorlint
-        - exportloopref
+        - copyloopvar
         - grouper
         - makezero
         - misspell
diff --git a/Makefile b/Makefile
index 3df2e31e6198171a555ce5b1f5189b960aeb0e39..d74cc8042b311fbc198cd576d17137a49feb6a09 100644
--- a/Makefile
+++ b/Makefile
@@ -8,8 +8,8 @@ GOSDN_PRG := $(MAKEFILE_DIR)$(TOOLS_DIR)
 GOPATH := $(~/go)
 GOBIN := $(GOSDN_PRG)
 
-GOLANG_VERSION := 1.22
-GOLANGCI_LINT_VERSION=v1.60.1
+GOLANG_VERSION := 1.23
+GOLANGCI_LINT_VERSION=v1.60.2
 
 GOCMD=CGO_ENABLED=0 go
 GOBUILD=$(GOCMD) build
diff --git a/README.md b/README.md
index b882bb772934604a4bcd4d6616fd6624d90d5c53..d01e1542c3cbcb7e59083e7177c1fc0b9ce1b4a6 100644
--- a/README.md
+++ b/README.md
@@ -27,26 +27,27 @@ Id: "0ff33c82-7fe1-482b-a0ca-67565806ee4b" # ID of the kms
 Name: kms01 # name of the kms
 InterComAddr: 0.0.0.0:50910 # IP and port to bind the local gRPC server for inter KMS communication to
 QuantumAddr: 0.0.0.0:50911 # IP and port to bind the local gRPC server for QKD modules to reach the KMS to (optional, only used for specific emulated or experimental QKD modules)
-AkmsURL: "http://172.100.20.22:4444/api/v1/keys/push_ksa_key" # address of the rest endpoint of a connected AKMS (used for sending KSA key to the AKMS).
-AkmsCkmsServerPort: "9696" # Port of connected AKMS
+AKMS:
+  RemoteAddress: "http://172.100.20.22:4444/api/v1/keys/push_ksa_key" # address of the rest endpoint of a connected AKMS (used for sending KSA key to the AKMS).
+  ServerPort: "9696" # Port of connected AKMS
+  ClientTLS: # Settings for TLS for akms ckms interface
+    Active: true # Whether TLS is enabled
+    CAFile: "ssl/ca.crt" # Path to ca
+    CertFile: "ssl/kms/kms1-selfsigned.crt" # Path to cert
+    KeyFile: "ssl/kms/kms1-selfsigned.key" # Path to key
+  ServerTLS:
+    Active: true # Whether TLS is enabled
+    CAFile: "ssl/ca.crt" # Path to ca
+    CertFile: "ssl/kms/kms1-selfsigned.crt" # Path to cert
+    KeyFile: "ssl/kms/kms1-selfsigned.key" # Path to key
 GRPCTimeoutInSeconds: 10 # Time in seconds for timeout of gRPC connections as a client. Defaults to 10 seconds. Should not be set to 0 or negative values.
 GnmiTLS: # Settings for TLS for gNMI endpoint. Can be overwritten with cli parameters.
-  TLS: true # Whether TLS is enabled
+  Active: true # Whether TLS is enabled
   CAFile: "ssl/ca.crt" # Path to ca
   CertFile: "ssl/kms/kms1-selfsigned.crt" # Path to cert
   KeyFile: "ssl/kms/kms1-selfsigned.key" # Path to key
 KmsTLS: # Settings for TLS for inter KMS communication
-  TLS: true # Whether TLS is enabled
-  CAFile: "ssl/ca.crt" # Path to ca
-  CertFile: "ssl/kms/kms1-selfsigned.crt" # Path to cert
-  KeyFile: "ssl/kms/kms1-selfsigned.key" # Path to key
-QuantumModuleTLS: # Settings for TLS for quantum module communication
-  TLS: true # Whether TLS is enabled
-  CAFile: "ssl/ca.crt" # Path to ca
-  CertFile: "ssl/kms/kms1-selfsigned.crt" # Path to cert
-  KeyFile: "ssl/kms/kms1-selfsigned.key" # Path to key
-AkmsCkmsTLS: # Settings for TLS for akms ckms interface
-  TLS: true # Whether TLS is enabled
+  Active: true # Whether TLS is enabled
   CAFile: "ssl/ca.crt" # Path to ca
   CertFile: "ssl/kms/kms1-selfsigned.crt" # Path to cert
   KeyFile: "ssl/kms/kms1-selfsigned.key" # Path to key
@@ -57,6 +58,11 @@ Peers: # Peers to other goKMS
       Type: danet # type of communication method between KMS (currently only danet supported)
       QuantumModule: # Quantum module used for this peer
           Type: emulated # Type of the quantum module e.g. emulated or etsi
+          TLS: # Settings for TLS for quantum module communication
+            Active: true # Whether TLS is enabled
+            CAFile: "ssl/ca.crt" # Path to ca
+            CertFile: "ssl/kms/kms1-selfsigned.crt" # Path to cert
+            KeyFile: "ssl/kms/kms1-selfsigned.key" # Path to key
           Address: 172.100.20.14 # Address of the quantum module
           Hostname: quantumlayer_1 # Optional addressing of the quantum module as hostname
     # peer to goKMS03
diff --git a/akms-simulator/Dockerfile b/akms-simulator/Dockerfile
index 5e906fda6c66a3c925608257e33a4baac44fbc67..2bb8f1e8248007fe17bdee3c21af74939f65fce7 100644
--- a/akms-simulator/Dockerfile
+++ b/akms-simulator/Dockerfile
@@ -1,4 +1,4 @@
-ARG GOLANG_VERSION=1.22
+ARG GOLANG_VERSION=1.23
 ARG BUILDARGS
 ARG GITLAB_PROXY
 
diff --git a/akms-simulator/akms-simulator.go b/akms-simulator/akms-simulator.go
index a355c0e2cd8418c126db417fdf4740e96f7e3792..6edfe88c86a4a8bcb0360297b6ca6d7fa960a804 100644
--- a/akms-simulator/akms-simulator.go
+++ b/akms-simulator/akms-simulator.go
@@ -1,9 +1,11 @@
 package main
 
 import (
+	"crypto/tls"
+	"crypto/x509"
 	"encoding/json"
+	"flag"
 	"io"
-	"log"
 	"net/http"
 	"os"
 
@@ -26,11 +28,53 @@ type KSAKey struct {
 }
 
 func main() {
+	tlsCAFile := flag.String("ca", "", "Path to CA certificate file")
+	tlsCertFile := flag.String("cert", "", "Path to certificate file")
+	tlsKeyFile := flag.String("key", "", "Path to key file")
+	flag.Parse()
+
 	logrus.Info("Starting AKMS Simulator...")
 
-	http.HandleFunc("/api/v1/keys/push_ksa_key", handlePushKsaKey)
-	http.HandleFunc("/debug/get_log_file", getLogFile)
-	log.Fatal(http.ListenAndServe(":4444", nil))
+	router := http.NewServeMux()
+
+	router.HandleFunc("/api/v1/keys/push_ksa_key", handlePushKsaKey)
+	router.HandleFunc("/debug/get_log_file", getLogFile)
+
+	server := &http.Server{
+		Addr:    ":4444",
+		Handler: router,
+	}
+
+	if *tlsCAFile != "" && *tlsCertFile != "" && *tlsKeyFile != "" {
+		logrus.Info("TLS enabled")
+		cp := x509.NewCertPool()
+		b, err := os.ReadFile(*tlsCAFile)
+		if err != nil {
+			logrus.Fatalf("Error reading CA file: %s", err)
+		}
+
+		if !cp.AppendCertsFromPEM(b) {
+			logrus.Fatalf("Error appending certs from PEM")
+		}
+
+		cert, err := tls.LoadX509KeyPair(*tlsCertFile, *tlsKeyFile)
+		if err != nil {
+			logrus.Fatalf("Error loading X509 key pair: %s", err)
+		}
+
+		tlsConfig := &tls.Config{
+			MinVersion:   tls.VersionTLS13,
+			ClientCAs:    cp,
+			Certificates: []tls.Certificate{cert},
+			ClientAuth:   tls.RequireAndVerifyClientCert,
+		}
+
+		server.TLSConfig = tlsConfig
+
+		logrus.Fatal(server.ListenAndServeTLS("", ""))
+	} else {
+		logrus.Fatal(server.ListenAndServe())
+	}
 }
 
 func getLogFile(w http.ResponseWriter, r *http.Request) {
diff --git a/config/goKMS/example01.yaml b/config/goKMS/example01.yaml
index 30950bfbfcfc330fed3d93917971ffdf06c7c2f2..b38b9287fde47840bb4156d185d7b1cc38bbff6b 100644
--- a/config/goKMS/example01.yaml
+++ b/config/goKMS/example01.yaml
@@ -3,16 +3,17 @@ Name: kms01
 InterComAddr: 0.0.0.0:50910
 QuantumAddr: 0.0.0.0:50911
 GRPCAddr: 0.0.0.0:50900
-AkmsURL: "http://akms-receiver01:4444/api/v1/keys/push_ksa_key"
-AkmsCkmsServerPort: "9696"
+AKMS:
+  RemoteAddress: "http://akms-receiver01:4444/api/v1/keys/push_ksa_key"
+  ServerPort: "9696"
 GRPCTimeoutInSeconds: 600
 KmsTLS:
-  TLS: false
+  Active: false
   CAFile: "ssl/ca.crt"
   CertFile: "ssl/kms/kms1-selfsigned.crt"
   KeyFile: "ssl/kms/kms1-selfsigned.key"
 QuantumModuleTLS:
-  TLS: false
+  Active: false
   CAFile: "ssl/ca.crt"
   CertFile: "ssl/kms/kms1-selfsigned.crt"
   KeyFile: "ssl/kms/kms1-selfsigned.key"
diff --git a/config/goKMS/example02.yaml b/config/goKMS/example02.yaml
index f99a774eb1f385c570589923349b2773bfbeff14..c7c48a3edd28a2b6d599d55399b44f6c931f8146 100644
--- a/config/goKMS/example02.yaml
+++ b/config/goKMS/example02.yaml
@@ -5,12 +5,12 @@ QuantumAddr: 0.0.0.0:50911
 GRPCAddr: 0.0.0.0:50900
 GRPCTimeoutInSeconds: 600
 KmsTLS:
-  TLS: false
+  Active: false
   CAFile: "ssl/ca.crt"
   CertFile: "ssl/kms/kms2-selfsigned.crt"
   KeyFile: "ssl/kms/kms2-selfsigned.key"
 QuantumModuleTLS:
-  TLS: false
+  Active: false
   CAFile: "ssl/ca.crt"
   CertFile: "ssl/kms/kms2-selfsigned.crt"
   KeyFile: "ssl/kms/kms2-selfsigned.key"
diff --git a/config/goKMS/example03.yaml b/config/goKMS/example03.yaml
index fdf66fe2e2cf7b2418d7a757e466fc237b054640..cb3c2b89472167c7b92d705f629e245c5a851090 100644
--- a/config/goKMS/example03.yaml
+++ b/config/goKMS/example03.yaml
@@ -5,12 +5,12 @@ QuantumAddr: 0.0.0.0:50911
 GRPCAddr: 0.0.0.0:50900
 GRPCTimeoutInSeconds: 600
 KmsTLS:
-  TLS: false
+  Active: false
   CAFile: "ssl/ca.crt"
   CertFile: "ssl/kms/kms3-selfsigned.crt"
   KeyFile: "ssl/kms/kms3-selfsigned.key"
 QuantumModuleTLS:
-  TLS: false
+  Active: false
   CAFile: "ssl/ca.crt"
   CertFile: "ssl/kms/kms3-selfsigned.crt"
   KeyFile: "ssl/kms/kms3-selfsigned.key"
diff --git a/config/goKMS/example04.yaml b/config/goKMS/example04.yaml
index a52d54843e90bed22866ec0a8fcf88b34e85de62..fabc08d35b7fd7ecbe8ffcd27730dbfe3f906db1 100644
--- a/config/goKMS/example04.yaml
+++ b/config/goKMS/example04.yaml
@@ -3,16 +3,17 @@ Name: kms04
 InterComAddr: 0.0.0.0:50910
 QuantumAddr: 0.0.0.0:50911
 GRPCAddr: 0.0.0.0:50900
-AkmsURL: "http://akms-receiver02:4444/api/v1/keys/push_ksa_key"
-AkmsCkmsServerPort: "9696"
+AKMS:
+  RemoteAddress: "http://akms-receiver02:4444/api/v1/keys/push_ksa_key"
+  ServerPort: "9696"
 GRPCTimeoutInSeconds: 600
 KmsTLS:
-  TLS: false
+  Active: false
   CAFile: "ssl/ca.crt"
   CertFile: "ssl/kms/kms4-selfsigned.crt"
   KeyFile: "ssl/kms/kms4-selfsigned.key"
 QuantumModuleTLS:
-  TLS: false
+  Active: false
   CAFile: "ssl/ca.crt"
   CertFile: "ssl/kms/kms4-selfsigned.crt"
   KeyFile: "ssl/kms/kms4-selfsigned.key"
diff --git a/config/goKMS/small_kms_1.yaml b/config/goKMS/small_kms_1.yaml
index d72c9c7ffed421a9f55acd3f7f8e46f205721303..369b36edf86294297531247124be4067dc05cb91 100644
--- a/config/goKMS/small_kms_1.yaml
+++ b/config/goKMS/small_kms_1.yaml
@@ -1,17 +1,18 @@
-Id: '0ff33c82-7fe1-482b-a0ca-67565806ee4b'
+Id: "0ff33c82-7fe1-482b-a0ca-67565806ee4b"
 Name: kms_1
 InterComAddr: 0.0.0.0:50910
 QuantumAddr: 0.0.0.0:50911
-AkmsURL: "http://akms-simulator_1:4444/api/v1/keys/push_ksa_key"
-AkmsCkmsServerPort: "9696"
+AKMS:
+  RemoteAddress: "http://akms-simulator_1:4444/api/v1/keys/push_ksa_key"
+  ServerPort: "9696"
 Peers:
-    # peer to kms_2
-    - PeerId: '5e41c291-6121-4335-84f6-41e04b8bdaa2'
-      PeerInterComAddr: kms_2:50910
-      Type: danet
-      # quantum module of type emulated at the given address
-      QuantumModule:
-          Type: emulated
-          Hostname: quantumlayer_1
+  # peer to kms_2
+  - PeerId: "5e41c291-6121-4335-84f6-41e04b8bdaa2"
+    PeerInterComAddr: kms_2:50910
+    Type: danet
+    # quantum module of type emulated at the given address
+    QuantumModule:
+      Type: emulated
+      Hostname: quantumlayer_1
 QkdnManagerServer:
   Address: ":8090"
diff --git a/config/goKMS/small_kms_2.yaml b/config/goKMS/small_kms_2.yaml
index 98644c38291c13b775ae4f1d6c5032f582c5037a..241be8beb0762f027aa24b85b40a46a0c25c8380 100644
--- a/config/goKMS/small_kms_2.yaml
+++ b/config/goKMS/small_kms_2.yaml
@@ -1,17 +1,18 @@
-Id: '5e41c291-6121-4335-84f6-41e04b8bdaa2'
+Id: "5e41c291-6121-4335-84f6-41e04b8bdaa2"
 Name: kms_2
 InterComAddr: 0.0.0.0:50910
 GRPCAddr: 0.0.0.0:50900
-AkmsURL: "http://akms-simulator_2:4444/api/v1/keys/push_ksa_key"
-AkmsCkmsServerPort: "9696"
+AKMS:
+  RemoteAddress: "http://akms-simulator_2:4444/api/v1/keys/push_ksa_key"
+  ServerPort: "9696"
 Peers:
-    # peer to kms_1
-    - PeerId: '0ff33c82-7fe1-482b-a0ca-67565806ee4b'
-      PeerInterComAddr: kms_1:50910
-      Type: danet
-      # quantum module of type emulated at the given address
-      QuantumModule:
-          Type: emulated
-          Hostname: quantumlayer_2
+  # peer to kms_1
+  - PeerId: "0ff33c82-7fe1-482b-a0ca-67565806ee4b"
+    PeerInterComAddr: kms_1:50910
+    Type: danet
+    # quantum module of type emulated at the given address
+    QuantumModule:
+      Type: emulated
+      Hostname: quantumlayer_2
 QkdnManagerServer:
   Address: ":8090"
diff --git a/etsi14module/Dockerfile b/etsi14module/Dockerfile
index 5353cfb4ff7a3eced4a32eb561debe7bb21bef7a..865fcb2c8a0209045a369483c05d6b7cdaeeb85d 100644
--- a/etsi14module/Dockerfile
+++ b/etsi14module/Dockerfile
@@ -1,4 +1,4 @@
-ARG GOLANG_VERSION=1.22
+ARG GOLANG_VERSION=1.23
 ARG BUILDARGS
 ARG GITLAB_PROXY
 
diff --git a/go.mod b/go.mod
index f89d39727abb8fd1351cb174928bd1f3ccd769f2..5236d8d0e1a9b98bd716e5d738b208a97da0f258 100644
--- a/go.mod
+++ b/go.mod
@@ -1,13 +1,13 @@
 module code.fbi.h-da.de/danet/quant
 
-go 1.22
+go 1.23
 
 require (
 	code.fbi.h-da.de/danet/gnmi-target v0.0.0-20240402114917-f5441059d9a3
 	code.fbi.h-da.de/danet/quipsec/gen/go/quipsec v0.0.0-20231207135002-06d40645e073
 	github.com/google/uuid v1.6.0
 	github.com/gorilla/mux v1.8.1
-	github.com/grpc-ecosystem/grpc-gateway/v2 v2.21.0
+	github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0
 	github.com/hashicorp/go-multierror v1.1.1
 	github.com/openconfig/gnmi v0.11.0
 	github.com/openconfig/goyang v1.6.0
@@ -16,9 +16,9 @@ require (
 	github.com/shirou/gopsutil v3.21.11+incompatible
 	github.com/sirupsen/logrus v1.9.3
 	github.com/stretchr/testify v1.9.0
-	golang.org/x/sys v0.24.0
-	google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142
-	google.golang.org/grpc v1.65.0
+	golang.org/x/sys v0.25.0
+	google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1
+	google.golang.org/grpc v1.66.2
 	google.golang.org/protobuf v1.34.2
 	gopkg.in/yaml.v3 v3.0.1
 )
@@ -38,6 +38,6 @@ require (
 	github.com/yusufpapurcu/wmi v1.2.4 // indirect
 	golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect
 	golang.org/x/net v0.26.0 // indirect
-	golang.org/x/text v0.16.0 // indirect
-	google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf // indirect
+	golang.org/x/text v0.17.0 // indirect
+	google.golang.org/genproto/googleapis/rpc v0.0.0-20240827150818-7e3bb234dfed // indirect
 )
diff --git a/go.sum b/go.sum
index 8c87e93235cd6b4d1c9f819f66b47c34adff175b..b4c0cd8933260430641b290136390618c07c87a4 100644
--- a/go.sum
+++ b/go.sum
@@ -31,10 +31,6 @@ github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiU
 github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
 github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68=
-github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
-github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4=
-github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
 github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY=
 github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
 github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
@@ -68,10 +64,8 @@ github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+
 github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
 github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
 github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.21.0 h1:CWyXh/jylQWp2dtiV33mY4iSSp6yf4lmn+c7/tN+ObI=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.21.0/go.mod h1:nCLIt0w3Ept2NwF8ThLmrppXsfT07oC8k0XNDxd8sVU=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0/go.mod h1:ggCgvZ2r7uOoQjOyu2Y1NhHmEPPzzuhWgcza5M1Ji1I=
 github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
 github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
 github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
@@ -88,16 +82,10 @@ github.com/openconfig/gnmi v0.10.0/go.mod h1:Y9os75GmSkhHw2wX8sMsxfI7qRGAEcDh8NT
 github.com/openconfig/gnmi v0.11.0 h1:H7pLIb/o3xObu3+x0Fv9DCK7TH3FUh7mNwbYe+34hFw=
 github.com/openconfig/gnmi v0.11.0/go.mod h1:9oJSQPPCpNvfMRj8e4ZoLVAw4wL8HyxXbiDlyuexCGU=
 github.com/openconfig/goyang v0.0.0-20200115183954-d0a48929f0ea/go.mod h1:dhXaV0JgHJzdrHi2l+w0fZrwArtXL7jEFoiqLEdmkvU=
-github.com/openconfig/goyang v1.4.5 h1:+s3p3MeiPQ/QNsC5DL3MXhCp5cv4dag3vlGKCtszsRU=
-github.com/openconfig/goyang v1.4.5/go.mod h1:sdNZi/wdTZyLNBNfgLzmmbi7kISm7FskMDKKzMY+x1M=
-github.com/openconfig/goyang v1.5.0 h1:Xv0q1g258wKSklJJZxFY/tjvQ7sdt66IaTnZEZhetPY=
-github.com/openconfig/goyang v1.5.0/go.mod h1:sdNZi/wdTZyLNBNfgLzmmbi7kISm7FskMDKKzMY+x1M=
 github.com/openconfig/goyang v1.6.0 h1:JjnPbLY1/y28VyTO67LsEV0TaLWNiZyDcsppGq4F4is=
 github.com/openconfig/goyang v1.6.0/go.mod h1:sdNZi/wdTZyLNBNfgLzmmbi7kISm7FskMDKKzMY+x1M=
 github.com/openconfig/grpctunnel v0.0.0-20220819142823-6f5422b8ca70/go.mod h1:OmTWe7RyZj2CIzIgy4ovEBzCLBJzRvWSZmn7u02U9gU=
 github.com/openconfig/ygot v0.6.0/go.mod h1:o30svNf7O0xK+R35tlx95odkDmZWS9JyWWQSmIhqwAs=
-github.com/openconfig/ygot v0.29.19 h1:3bbAWbCBVjyjHgeROvT38LQ7pAxcjtm7C2vNVj/rvEE=
-github.com/openconfig/ygot v0.29.19/go.mod h1:8/FXt4tc5wSfYDEJbGGumxmxwJ55Xuv12oO/jCyEins=
 github.com/openconfig/ygot v0.29.20 h1:XHLpwCN91QuKc2LAvnEqtCmH8OuxgLlErDhrdl2mJw8=
 github.com/openconfig/ygot v0.29.20/go.mod h1:K8HbrPm/v8/emtGQ9+RsJXx6UPKC5JzS/FqK7pN+tMo=
 github.com/pborman/getopt v1.1.0/go.mod h1:FxXoW1Re00sQG/+KIkuSqRL/LwQgSkv7uyac+STFsbk=
@@ -151,10 +139,6 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL
 golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
 golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
 golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
-golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
-golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=
-golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
 golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
 golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -176,22 +160,18 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc
 golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
-golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
-golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg=
 golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
+golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
-golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
-golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
-golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
+golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc=
+golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
@@ -211,32 +191,12 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98
 google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
 google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
 google.golang.org/genproto v0.0.0-20210811021853-ddbe55d93216/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w=
-google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 h1:+rdxYoE3E5htTEWIe15GlN6IfvbURM//Jt0mmkmm6ZU=
-google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117/go.mod h1:OimBR/bc1wPO9iV4NC2bpyjy3VnAwZh5EBPQdtaE5oo=
-google.golang.org/genproto/googleapis/api v0.0.0-20240610135401-a8a62080eff3 h1:QW9+G6Fir4VcRXVH8x3LilNAb6cxBGLa6+GM4hRwexE=
-google.golang.org/genproto/googleapis/api v0.0.0-20240610135401-a8a62080eff3/go.mod h1:kdrSS/OiLkPrNUpzD4aHgCq2rVuC/YRxok32HXZ4vRE=
-google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 h1:MuYw1wJzT+ZkybKfaOXKp5hJiZDn2iHaXRw0mRYdHSc=
-google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4/go.mod h1:px9SlOOZBg1wM1zdnr8jEL4CNGUBZ+ZKYtNPApNQc4c=
-google.golang.org/genproto/googleapis/api v0.0.0-20240624140628-dc46fd24d27d h1:Aqf0fiIdUQEj0Gn9mKFFXoQfTTEaNopWpfVyYADxiSg=
-google.golang.org/genproto/googleapis/api v0.0.0-20240624140628-dc46fd24d27d/go.mod h1:Od4k8V1LQSizPRUK4OzZ7TBE/20k+jPczUDAEyvn69Y=
-google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 h1:0+ozOGcrp+Y8Aq8TLNN2Aliibms5LEzsq99ZZmAGYm0=
-google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094/go.mod h1:fJ/e3If/Q67Mj99hin0hMhiNyCRmt6BQ2aWIJshUSJw=
-google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d h1:kHjw/5UfflP/L5EbledDrcG4C2597RtymmGRZvHiCuY=
-google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d/go.mod h1:mw8MG/Qz5wfgYr6VqVCiZcHe/GJEfI+oGGDCohaVgB0=
-google.golang.org/genproto/googleapis/api v0.0.0-20240722135656-d784300faade h1:WxZOF2yayUHpHSbUE6NMzumUzBxYc3YGwo0YHnbzsJY=
-google.golang.org/genproto/googleapis/api v0.0.0-20240722135656-d784300faade/go.mod h1:mw8MG/Qz5wfgYr6VqVCiZcHe/GJEfI+oGGDCohaVgB0=
-google.golang.org/genproto/googleapis/api v0.0.0-20240723171418-e6d459c13d2a h1:YIa/rzVqMEokBkPtydCkx1VLmv3An1Uw7w1P1m6EhOY=
-google.golang.org/genproto/googleapis/api v0.0.0-20240723171418-e6d459c13d2a/go.mod h1:AHT0dDg3SoMOgZGnZk29b5xTbPHMoEC8qthmBLJCpys=
-google.golang.org/genproto/googleapis/api v0.0.0-20240725223205-93522f1f2a9f h1:b1Ln/PG8orm0SsBbHZWke8dDp2lrCD4jSmfglFpTZbk=
-google.golang.org/genproto/googleapis/api v0.0.0-20240725223205-93522f1f2a9f/go.mod h1:AHT0dDg3SoMOgZGnZk29b5xTbPHMoEC8qthmBLJCpys=
-google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf h1:GillM0Ef0pkZPIB+5iO6SDK+4T9pf6TpaYR6ICD5rVE=
-google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:OFMYQFHJ4TM3JRlWDZhJbZfra2uqc3WLBZiaaqP4DtU=
-google.golang.org/genproto/googleapis/api v0.0.0-20240805194559-2c9e96a0b5d4 h1:ABEBT/sZ7We8zd7A5f3KO6zMQe+s3901H7l8Whhijt0=
-google.golang.org/genproto/googleapis/api v0.0.0-20240805194559-2c9e96a0b5d4/go.mod h1:4+X6GvPs+25wZKbQq9qyAXrwIRExv7w0Ea6MgZLZiDM=
-google.golang.org/genproto/googleapis/api v0.0.0-20240812133136-8ffd90a71988 h1:+/tmTy5zAieooKIXfzDm9KiA3Bv6JBwriRN9LY+yayk=
-google.golang.org/genproto/googleapis/api v0.0.0-20240812133136-8ffd90a71988/go.mod h1:4+X6GvPs+25wZKbQq9qyAXrwIRExv7w0Ea6MgZLZiDM=
-google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8=
-google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo=
+google.golang.org/genproto/googleapis/api v0.0.0-20240820151423-278611b39280 h1:YDFM9oOjiFhaMAVgbDxfxW+66nRrsvzQzJ51wp3OxC0=
+google.golang.org/genproto/googleapis/api v0.0.0-20240820151423-278611b39280/go.mod h1:fO8wJzT2zbQbAjbIoos1285VfEIYKDDY+Dt+WpTkh6g=
+google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed h1:3RgNmBoI9MZhsj3QxC+AP/qQhNwpCLOvYDYYsFrhFt0=
+google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed/go.mod h1:OCdP9MfskevB/rbYvHTsXTtKC+3bHWajPdoKgjcYkfo=
+google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc=
+google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 h1:1GBuWVLM/KMVUv1t1En5Gs+gFZCNd360GGb4sSxtrhU=
@@ -255,6 +215,12 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f h1:
 google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf h1:liao9UHurZLtiEwBgT9LMOnKYsHze6eA6w1KQCMVN2Q=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240823204242-4ba0660f739c h1:Kqjm4WpoWvwhMPcrAczoTyMySQmYa9Wy2iL6Con4zn8=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240823204242-4ba0660f739c/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240827150818-7e3bb234dfed h1:J6izYgfBXAI3xTKLgxzTmUltdYaLsuBxFCgDHWJ/eXg=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240827150818-7e3bb234dfed/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
 google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
 google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
 google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
@@ -263,10 +229,14 @@ google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTp
 google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
 google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=
 google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
-google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY=
-google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg=
 google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc=
 google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ=
+google.golang.org/grpc v1.66.0 h1:DibZuoBznOxbDQxRINckZcUvnCEvrW9pcWIE2yF9r1c=
+google.golang.org/grpc v1.66.0/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y=
+google.golang.org/grpc v1.66.1 h1:hO5qAXR19+/Z44hmvIM4dQFMSYX9XcWsByfoxutBpAM=
+google.golang.org/grpc v1.66.1/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y=
+google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo=
+google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y=
 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
 google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
 google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
@@ -282,8 +252,6 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
 google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
 google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
-google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
-google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
 google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
 google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
diff --git a/goKMS/Dockerfile b/goKMS/Dockerfile
index 3bf984ab7f66488250e301b3e48acb4cc711326d..2ce288f03ff323f0e2ed64986a1075890a0abd5e 100644
--- a/goKMS/Dockerfile
+++ b/goKMS/Dockerfile
@@ -1,4 +1,4 @@
-ARG GOLANG_VERSION=1.22
+ARG GOLANG_VERSION=1.23
 ARG BUILDARGS
 ARG GITLAB_PROXY
 
diff --git a/goKMS/config/config.go b/goKMS/config/config.go
index 7b9aadc9b9ca5149b63bf577875ea6f00facae8d..7ea24a6cee7875a48aaa3810be9eeb0983c23258 100644
--- a/goKMS/config/config.go
+++ b/goKMS/config/config.go
@@ -11,19 +11,23 @@ type Config struct {
 	Name                 string             `yaml:"Name"`
 	InterComAddr         string             `yaml:"InterComAddr"`
 	QuantumAddr          string             `yaml:"QuantumAddr"`
-	AkmsURL              string             `yaml:"AkmsURL"`
-	AkmsCkmsServerPort   string             `yaml:"AkmsCkmsServerPort"`
+	AKMS                 AKMS               `yaml:"AKMS"`
 	GnmiBindAddress      string             `yaml:"GnmiBindAddress"`
+	KmsTLS               TLSConfig          `yaml:"KmsTLS"`
 	Peers                []Peer             `yaml:"Peers"`
 	GnmiTLS              TLSConfig          `yaml:"GnmiTLS"`
-	KmsTLS               TLSConfig          `yaml:"KmsTLS"`
-	QuantumModuleTLS     TLSConfig          `yaml:"QuantumModuleTLS"`
-	AkmsCkmsTLS          TLSConfig          `yaml:"AkmsCkmsTLS"`
 	ETSI14Server         *ETSI14Server      `yaml:"ETSI14Server,omitempty"`
 	QkdnManagerServer    *QkdnManagerServer `yaml:"QkdnManagerServer,omitempty"`
 	GRPCTimeoutInSeconds int                `yaml:"GRPCTimeoutInSeconds"`
 }
 
+type AKMS struct {
+	RemoteAddress string    `yaml:"RemoteAddress"`
+	ServerPort    string    `yaml:"ServerPort"`
+	ServerTLS     TLSConfig `yaml:"ServerTLS"`
+	ClientTLS     TLSConfig `yaml:"ClientTLS"`
+}
+
 type Peer struct {
 	PeerId           string        `yaml:"PeerId"`
 	PeerInterComAddr string        `yaml:"PeerInterComAddr"`
@@ -32,22 +36,24 @@ type Peer struct {
 }
 
 type TLSConfig struct {
-	TLS      bool   `yaml:"TLS"`
-	CAFile   string `yaml:"CAFile"`
-	CertFile string `yaml:"CertFile"`
-	KeyFile  string `yaml:"KeyFile"`
+	Active             bool   `yaml:"Active"`
+	InsecureSkipVerify bool   `yaml:"InsecureSkipVerify"`
+	CAFile             string `yaml:"CAFile"`
+	CertFile           string `yaml:"CertFile"`
+	KeyFile            string `yaml:"KeyFile"`
 }
 
 type QuantumModule struct {
-	QmType           string `yaml:"Type"`
-	Address          string `yaml:"Address"`
-	Hostname         string `yaml:"Hostname"`
-	LocalSAEID       string `yaml:"LocalSAEID"`
-	TargetSAEID      string `yaml:"TargetSAEID"`
-	MasterMode       bool   `yaml:"MasterMode"`
-	KeyFetchInterval int    `yaml:"KeyFetchInterval"`
-	KeyFetchAmount   int    `yaml:"KeyFetchAmount"`
-	MaxKeyFillLevel  int    `yaml:"MaxKeyFillLevel"`
+	QmType           string    `yaml:"Type"`
+	TLS              TLSConfig `yaml:"TLS"`
+	Address          string    `yaml:"Address"`
+	Hostname         string    `yaml:"Hostname"`
+	LocalSAEID       string    `yaml:"LocalSAEID"`
+	TargetSAEID      string    `yaml:"TargetSAEID"`
+	MasterMode       bool      `yaml:"MasterMode"`
+	KeyFetchInterval int       `yaml:"KeyFetchInterval"`
+	KeyFetchAmount   int       `yaml:"KeyFetchAmount"`
+	MaxKeyFillLevel  int       `yaml:"MaxKeyFillLevel"`
 }
 
 type ETSI14Server struct {
diff --git a/goKMS/kms/akms/client/client.go b/goKMS/kms/akmsInterface/client/client.go
similarity index 56%
rename from goKMS/kms/akms/client/client.go
rename to goKMS/kms/akmsInterface/client/client.go
index 6a1a075761dbf0bbed68da123d31398447fe8dda..19a58beb949213228442cc0c29f85c2d3478474c 100644
--- a/goKMS/kms/akms/client/client.go
+++ b/goKMS/kms/akmsInterface/client/client.go
@@ -3,20 +3,39 @@ package client
 import (
 	"bytes"
 	"encoding/json"
+	"fmt"
+	"io"
 	"net/http"
 
+	"code.fbi.h-da.de/danet/quant/goKMS/config"
 	"code.fbi.h-da.de/danet/quant/goKMS/kms/crypto"
+	kmstls "code.fbi.h-da.de/danet/quant/goKMS/kms/tls"
 	"github.com/sirupsen/logrus"
 )
 
 type CkmsAkmsClient struct {
-	url string
+	url        string
+	httpClient *http.Client
 }
 
-func NewCkmsAkmsClient(url string) *CkmsAkmsClient {
-	return &CkmsAkmsClient{
-		url: url,
+func NewCkmsAkmsClient(url string, tlsConfig config.TLSConfig) (*CkmsAkmsClient, error) {
+	client := &http.Client{}
+
+	if tlsConfig.Active {
+		tlsConf, err := kmstls.GenerateTLSLibraryConfig(tlsConfig)
+		if err != nil {
+			return nil, fmt.Errorf("unable to generate TLS config: %w", err)
+		}
+
+		client.Transport = &http.Transport{
+			TLSClientConfig: tlsConf,
+		}
 	}
+
+	return &CkmsAkmsClient{
+		url:        url,
+		httpClient: client,
+	}, nil
 }
 
 type PushKSAKeyRequest struct {
@@ -38,9 +57,14 @@ func (c *CkmsAkmsClient) SendKSAKeysToRequestingInstances(requestID string, proc
 		return err
 	}
 
-	resp, err := http.Post(c.url, "application/json", bytes.NewBuffer(jsonData))
+	logrus.Infof("Attempting to send KSA post request to AKMS with URL: %s", c.url)
+	resp, err := c.httpClient.Post(c.url, "application/json", bytes.NewBuffer(jsonData))
 	if err != nil {
-		logrus.Errorf("Error sending POST request: %s", err)
+		body, err2 := io.ReadAll(resp.Body)
+		if err2 != nil {
+			logrus.Errorf("Error reading POST response body: %s", err2)
+		}
+		logrus.Errorf("Error sending POST request: %s, received response body: %s", err, string(body))
 		logrus.Errorf("Tried to send request: %s to url: %s", jsonData, c.url)
 		return err
 	}
diff --git a/goKMS/kms/akms/server/server.go b/goKMS/kms/akmsInterface/server/server.go
similarity index 80%
rename from goKMS/kms/akms/server/server.go
rename to goKMS/kms/akmsInterface/server/server.go
index 76e7e439053275d5d67aedec5f8b582a5d639d79..c80409afc2f906cf64c1e8624f9dfb82fea0fcce 100644
--- a/goKMS/kms/akms/server/server.go
+++ b/goKMS/kms/akmsInterface/server/server.go
@@ -6,17 +6,20 @@ import (
 	"net/http"
 	"time"
 
+	"code.fbi.h-da.de/danet/quant/goKMS/config"
 	"code.fbi.h-da.de/danet/quant/goKMS/kms/event"
 	"code.fbi.h-da.de/danet/quant/goKMS/kms/receiver"
+	kmstls "code.fbi.h-da.de/danet/quant/goKMS/kms/tls"
 	"github.com/google/uuid"
 	"github.com/sirupsen/logrus"
 )
 
 type AKMSReceiverServer struct {
-	server *http.Server
+	server    *http.Server
+	tlsConfig config.TLSConfig
 }
 
-func NewAKMSReceiver(port string, eventBus *event.EventBus, receiver *receiver.Receiver, generateAndSend func(string, uuid.UUID, string, int) error) *AKMSReceiverServer {
+func NewAKMSReceiver(port string, eventBus *event.EventBus, receiver *receiver.Receiver, generateAndSend func(string, uuid.UUID, string, int) error, tlsConfig config.TLSConfig) (*AKMSReceiverServer, error) {
 	router := http.NewServeMux()
 
 	router.HandleFunc("/api/v1/keys/ksa_key_req", ksaReqHandler(eventBus, receiver, generateAndSend))
@@ -26,15 +29,28 @@ func NewAKMSReceiver(port string, eventBus *event.EventBus, receiver *receiver.R
 		Handler: router,
 	}
 
+	if tlsConfig.Active {
+		tlsLibraryConfig, err := kmstls.GenerateServerTLSLibraryConfig(tlsConfig)
+		if err != nil {
+			return nil, fmt.Errorf("unable to generate TLS config: %w", err)
+		}
+		server.TLSConfig = tlsLibraryConfig
+	}
+
 	AKMSReceiver := &AKMSReceiverServer{
-		server: server,
+		server:    server,
+		tlsConfig: tlsConfig,
 	}
 
-	return AKMSReceiver
+	return AKMSReceiver, nil
 }
 
 func (akmsReceiver *AKMSReceiverServer) Serve() {
-	go akmsReceiver.server.ListenAndServe() //nolint:errcheck
+	if akmsReceiver.tlsConfig.Active {
+		go akmsReceiver.server.ListenAndServeTLS("", "") //nolint:errcheck
+	} else {
+		go akmsReceiver.server.ListenAndServe() //nolint:errcheck
+	}
 }
 
 type KeyProperties struct {
diff --git a/goKMS/kms/crypto/crypto_test.go b/goKMS/kms/crypto/crypto_test.go
index 6c7afe7fab79cc2265d33fe2071d6b5129e5ecbb..24dc8bd21eec0ddf6c3d702de2364f9eb8ffb02a 100644
--- a/goKMS/kms/crypto/crypto_test.go
+++ b/goKMS/kms/crypto/crypto_test.go
@@ -46,7 +46,6 @@ func TestCrypto_AES_Encrypt(t *testing.T) {
 	}
 
 	for name, test := range tests {
-		test := test
 		t.Run(name, func(t *testing.T) {
 			t.Parallel()
 
@@ -173,7 +172,6 @@ func TestCrypto_AES_Decrypt(t *testing.T) {
 	}
 
 	for name, test := range tests {
-		test := test
 		t.Run(name, func(t *testing.T) {
 			t.Parallel()
 
diff --git a/goKMS/kms/kms.go b/goKMS/kms/kms.go
index 7ba5551d3974f63550919731a90b5d681ae710f4..b34e722a4a581f32c31ecd4ed988a4b2b9f07bdf 100644
--- a/goKMS/kms/kms.go
+++ b/goKMS/kms/kms.go
@@ -21,8 +21,8 @@ import (
 
 	pbIC "code.fbi.h-da.de/danet/quant/goKMS/api/gen/proto/go/kmsintercom"
 	"code.fbi.h-da.de/danet/quant/goKMS/config"
-	akmsClient "code.fbi.h-da.de/danet/quant/goKMS/kms/akms/client"
-	akmsServer "code.fbi.h-da.de/danet/quant/goKMS/kms/akms/server"
+	akmsInterfaceClient "code.fbi.h-da.de/danet/quant/goKMS/kms/akmsInterface/client"
+	akmsInterfaceServer "code.fbi.h-da.de/danet/quant/goKMS/kms/akmsInterface/server"
 	"code.fbi.h-da.de/danet/quant/goKMS/kms/crypto"
 	etsi14Server "code.fbi.h-da.de/danet/quant/goKMS/kms/etsi/etsi14/server"
 	"code.fbi.h-da.de/danet/quant/goKMS/kms/event"
@@ -82,8 +82,8 @@ type KMS struct {
 	eventBus            *event.EventBus
 	receiver            *receiver.Receiver
 	// Akms things
-	ckmsAkmsClient *akmsClient.CkmsAkmsClient
-	ckmsAkmsServer *akmsServer.AKMSReceiverServer
+	ckmsAkmsClient *akmsInterfaceClient.CkmsAkmsClient
+	ckmsAkmsServer *akmsInterfaceServer.AKMSReceiverServer
 	// ETSI14 Server things
 	etsi14Server    *etsi14Server.ETSI14RESTService
 	keyStoreChannel chan []crypto.KSAKey
@@ -118,9 +118,13 @@ func NewKMS(kmsUUID uuid.UUID, logOutput io.Writer, logLevel log.Level, logInJso
 		log.SetReportCaller(false)
 	}
 
-	var ckmsAkmsClient *akmsClient.CkmsAkmsClient
-	if config.AkmsURL != "" {
-		ckmsAkmsClient = akmsClient.NewCkmsAkmsClient(config.AkmsURL)
+	var ckmsAkmsClient *akmsInterfaceClient.CkmsAkmsClient
+	var err error
+	if config.AKMS.RemoteAddress != "" {
+		ckmsAkmsClient, err = akmsInterfaceClient.NewCkmsAkmsClient(config.AKMS.RemoteAddress, config.AKMS.ClientTLS)
+		if err != nil {
+			log.Fatalf("Failed to setup CkmsAkmsClient: %s", err)
+		}
 	}
 
 	gRPCTimeoutInSecondsDuration := time.Duration(config.GRPCTimeoutInSeconds) * time.Second
@@ -149,15 +153,18 @@ func NewKMS(kmsUUID uuid.UUID, logOutput io.Writer, logLevel log.Level, logInJso
 	go createdKMS.startGRPC()
 
 	// initialize from config
-	err := createdKMS.initializePeers(config)
+	err = createdKMS.initializePeers(config)
 	if err != nil {
 		log.Fatalf("Failed to initialize peers: %s", err)
 	}
 
 	// Start the akmsCkmsReceiverServer
-	if config.AkmsCkmsServerPort != "" {
-		createdKMS.ckmsAkmsServer = akmsServer.NewAKMSReceiver(config.AkmsCkmsServerPort, createdKMS.eventBus, receiver, createdKMS.GenerateAndSendKSAKey)
-		log.Infof("Starting AKMS receiver server on port: %s", config.AkmsCkmsServerPort)
+	if config.AKMS.ServerPort != "" {
+		createdKMS.ckmsAkmsServer, err = akmsInterfaceServer.NewAKMSReceiver(config.AKMS.ServerPort, createdKMS.eventBus, receiver, createdKMS.GenerateAndSendKSAKey, config.AKMS.ServerTLS)
+		if err != nil {
+			log.Fatalf("Failed to initialize CkmsAkmsServer: %s", err)
+		}
+		log.Infof("Starting AKMS receiver server on port: %s", config.AKMS.ServerPort)
 		go createdKMS.ckmsAkmsServer.Serve()
 	}
 
@@ -195,7 +202,7 @@ func (kms *KMS) initializePeers(config *config.Config) error {
 			qm = peers.NewDanetQuantumModule(pqm.Address, config.Id)
 		case "etsi":
 			qm, err = peers.NewETSI014HTTPQuantumModule(pqm.Address, config.Id, pqm.LocalSAEID, pqm.TargetSAEID,
-				config.QuantumModuleTLS, pqm.MasterMode,
+				peer.QuantumModule.TLS, pqm.MasterMode,
 				peer.QuantumModule.KeyFetchInterval, int64(peer.QuantumModule.KeyFetchAmount), uint64(peer.QuantumModule.MaxKeyFillLevel))
 			if err != nil {
 				log.Fatalf("Failed to create ETSI QKD module: %s", err)
diff --git a/goKMS/kms/peers/etsi14Quantummodule.go b/goKMS/kms/peers/etsi14Quantummodule.go
index 6a7a037d7398d6c65e52918f05ace006c59a9ff8..11b21ee0cde4426e0e1878a0919092ac5d0fc06c 100644
--- a/goKMS/kms/peers/etsi14Quantummodule.go
+++ b/goKMS/kms/peers/etsi14Quantummodule.go
@@ -51,8 +51,8 @@ func NewETSI014HTTPQuantumModule(addr, kmsId, localSAEID, targetSAEID string, tl
 		Scheme: parsedUrl.Scheme,
 	}
 
-	if tlsConfig.TLS {
-		tlsConf, err := kmstls.GenerateTlsLibraryConfig(tlsConfig)
+	if tlsConfig.Active {
+		tlsConf, err := kmstls.GenerateTLSLibraryConfig(tlsConfig)
 		if err != nil {
 			return nil, fmt.Errorf("unable to generate TLS config: %w", err)
 		}
@@ -112,54 +112,13 @@ func (qm *ETSI014HTTPQuantumModule) Initialize() error {
 	// start polling keys
 	if qm.master {
 		go func() {
-			ticker := time.NewTicker(time.Duration(qm.keyFetchInterval) * time.Second)
+			restartWaitingTime := time.Duration(2) * time.Minute
+			ticker := time.NewTicker(restartWaitingTime)
 			defer ticker.Stop()
 
-			failedAttemps := 0
-
-			// TODO: add context/channel to stop
-			for {
-				select {
-				case <-ticker.C:
-					if failedAttemps == maxFailedKeyRequestAttempts {
-						log.Errorf("stopped trying to fetch keys from qkd module after %d tries", failedAttemps)
-						break
-					}
-
-					if qm.keyStore.Length() < int(qm.maxKeyFillLevel) {
-						container, err := qm.GetKeys(qm.keyFetchAmount, 256, nil, nil, nil)
-						if err != nil {
-							log.Error(err)
-							failedAttemps++
-							continue
-						}
-
-						keyIds := make([]string, len(container.GetKeys()))
-						for i, keyItem := range container.GetKeys() {
-							keyIds[i] = keyItem.GetKeyID()
-						}
-
-						_, err = qm.kmsClient.KeyIdNotification(context.Background(),
-							&pbIC.KeyIdNotificationRequest{
-								Timestamp: time.Now().Unix(),
-								KmsId:     qm.kmsId,
-								KeyIds:    keyIds,
-							})
-						if err != nil {
-							log.Error(err)
-							failedAttemps++
-							continue
-						}
-
-						if err := store.AddETSIKeysToKeystore(qm.keyStore, container.GetKeys()); err != nil {
-							log.Error(err)
-						}
-
-						failedAttemps = 0
-					}
-				case <-qm.stopFetch:
-					break
-				}
+			// immediately start with the ticker instead of waiting the defined amount
+			for ; true; <-ticker.C {
+				qm.doKeyFetching()
 			}
 		}()
 	}
@@ -225,3 +184,58 @@ func (qm *ETSI014HTTPQuantumModule) GetKeyWithIds(keyIds []etsi14ClientGenerated
 
 	return container, nil
 }
+
+func (qm *ETSI014HTTPQuantumModule) doKeyFetching() {
+	ticker := time.NewTicker(time.Duration(qm.keyFetchInterval) * time.Second)
+	defer ticker.Stop()
+
+	failedAttemps := 0
+
+	for {
+		select {
+		case <-ticker.C:
+			if failedAttemps == maxFailedKeyRequestAttempts {
+				log.Errorf("stopped trying to fetch keys from qkd module after %d tries", failedAttemps)
+				break
+			}
+
+			if qm.keyStore.Length() < int(qm.maxKeyFillLevel) {
+				container, err := qm.GetKeys(qm.keyFetchAmount, 256, nil, nil, nil)
+				if err != nil {
+					log.Error(err)
+					failedAttemps++
+					continue
+				}
+
+				keyIds := make([]string, len(container.GetKeys()))
+				for i, keyItem := range container.GetKeys() {
+					keyIds[i] = keyItem.GetKeyID()
+				}
+
+				_, err = qm.kmsClient.KeyIdNotification(context.Background(),
+					&pbIC.KeyIdNotificationRequest{
+						Timestamp: time.Now().Unix(),
+						KmsId:     qm.kmsId,
+						KeyIds:    keyIds,
+					})
+				if err != nil {
+					log.Error(err)
+					failedAttemps++
+					continue
+				}
+
+				err = store.AddETSIKeysToKeystore(qm.keyStore, container.GetKeys())
+				if err != nil {
+					log.Error(err)
+					failedAttemps++
+					continue
+				}
+
+				failedAttemps = 0
+			}
+		case <-qm.stopFetch:
+			break
+		}
+	}
+
+}
diff --git a/goKMS/kms/tls/tls.go b/goKMS/kms/tls/tls.go
index df180446acf23f767906adeb4093f5f03923ec9b..040b819936df6033ad77f2f9323941eee4faa2aa 100644
--- a/goKMS/kms/tls/tls.go
+++ b/goKMS/kms/tls/tls.go
@@ -11,15 +11,15 @@ import (
 	"google.golang.org/grpc/credentials/insecure"
 )
 
-func GenerateGRPCServerTransportCredsBasedOnTLSFlag(tlsData config.TLSConfig) (credentials.TransportCredentials, error) {
+func GenerateGRPCServerTransportCredsBasedOnTLSFlag(tlsConfig config.TLSConfig) (credentials.TransportCredentials, error) {
 	var gRPCTransportCreds credentials.TransportCredentials
-	if tlsData.TLS {
-		creds, err := generateGRPCServerTransportCredsWithTLS(tlsData.CAFile, tlsData.CertFile, tlsData.KeyFile)
+	if tlsConfig.Active {
+		tlsLibraryConfig, err := GenerateServerTLSLibraryConfig(tlsConfig)
 		if err != nil {
 			return nil, err
 		}
 
-		gRPCTransportCreds = creds
+		gRPCTransportCreds = credentials.NewTLS(tlsLibraryConfig)
 	} else {
 		gRPCTransportCreds = insecure.NewCredentials()
 	}
@@ -27,9 +27,9 @@ func GenerateGRPCServerTransportCredsBasedOnTLSFlag(tlsData config.TLSConfig) (c
 	return gRPCTransportCreds, nil
 }
 
-func generateGRPCServerTransportCredsWithTLS(caFile, certFile, keyFile string) (credentials.TransportCredentials, error) {
+func GenerateServerTLSLibraryConfig(tlsConfig config.TLSConfig) (*tls.Config, error) {
 	cp := x509.NewCertPool()
-	b, err := os.ReadFile(caFile)
+	b, err := os.ReadFile(tlsConfig.CAFile)
 	if err != nil {
 		return nil, err
 	}
@@ -38,30 +38,28 @@ func generateGRPCServerTransportCredsWithTLS(caFile, certFile, keyFile string) (
 		return nil, fmt.Errorf("credentials: failed to append certificates")
 	}
 
-	cert, err := tls.LoadX509KeyPair(certFile, keyFile)
+	cert, err := tls.LoadX509KeyPair(tlsConfig.CertFile, tlsConfig.KeyFile)
 	if err != nil {
 		return nil, err
 	}
 
-	tlsConfig := &tls.Config{
+	return &tls.Config{
 		MinVersion:   tls.VersionTLS13,
 		ClientCAs:    cp,
 		Certificates: []tls.Certificate{cert},
 		ClientAuth:   tls.RequireAndVerifyClientCert,
-	}
-
-	return credentials.NewTLS(tlsConfig), nil
+	}, nil
 }
 
 func GenerateGRPCClientTransportCredsBasedOnTLSFlag(tlsConfig config.TLSConfig) (credentials.TransportCredentials, error) {
 	var gRPCTransportCreds credentials.TransportCredentials
-	if tlsConfig.TLS {
-		creds, err := generateGRPCClientTransportCredsWithTLS(tlsConfig.CAFile, tlsConfig.CertFile, tlsConfig.KeyFile)
+	if tlsConfig.Active {
+		tlsLibraryConfig, err := GenerateTLSLibraryConfig(tlsConfig)
 		if err != nil {
 			return nil, err
 		}
 
-		gRPCTransportCreds = creds
+		gRPCTransportCreds = credentials.NewTLS(tlsLibraryConfig)
 	} else {
 		gRPCTransportCreds = insecure.NewCredentials()
 	}
@@ -69,10 +67,10 @@ func GenerateGRPCClientTransportCredsBasedOnTLSFlag(tlsConfig config.TLSConfig)
 	return gRPCTransportCreds, nil
 }
 
-func generateGRPCClientTransportCredsWithTLS(caFile, certFile, keyFile string) (credentials.TransportCredentials, error) {
+func GenerateTLSLibraryConfig(tlsConfig config.TLSConfig) (*tls.Config, error) {
 	cp := x509.NewCertPool()
 
-	b, err := os.ReadFile(caFile)
+	b, err := os.ReadFile(tlsConfig.CAFile)
 	if err != nil {
 		return nil, err
 	}
@@ -80,38 +78,15 @@ func generateGRPCClientTransportCredsWithTLS(caFile, certFile, keyFile string) (
 		return nil, fmt.Errorf("credentials: failed to append certificates")
 	}
 
-	cert, err := tls.LoadX509KeyPair(certFile, keyFile)
-	if err != nil {
-		return nil, err
-	}
-
-	tlsConfig := &tls.Config{
-		MinVersion:   tls.VersionTLS13,
-		RootCAs:      cp,
-		Certificates: []tls.Certificate{cert},
-	}
-
-	return credentials.NewTLS(tlsConfig), nil
-}
-
-func GenerateTlsLibraryConfig(tlsConfig config.TLSConfig) (*tls.Config, error) {
-	caCert, err := os.ReadFile(tlsConfig.CAFile)
-	if err != nil {
-		return nil, err
-	}
-	caCertPool := x509.NewCertPool()
-	if !caCertPool.AppendCertsFromPEM(caCert) {
-		return nil, fmt.Errorf("credentials: failed to append certificates")
-	}
-
 	cert, err := tls.LoadX509KeyPair(tlsConfig.CertFile, tlsConfig.KeyFile)
 	if err != nil {
 		return nil, err
 	}
 
 	return &tls.Config{
-		MinVersion:   tls.VersionTLS13,
-		RootCAs:      caCertPool,
-		Certificates: []tls.Certificate{cert},
+		MinVersion:         tls.VersionTLS13,
+		RootCAs:            cp,
+		Certificates:       []tls.Certificate{cert},
+		InsecureSkipVerify: tlsConfig.InsecureSkipVerify,
 	}, nil
 }
diff --git a/goKMS/main.go b/goKMS/main.go
index b9bbaa48d9da9d7a6bae6c24c01de2af2316ee20..88a12d748246c5fb5c0228f2ba4f551ff04060bc 100644
--- a/goKMS/main.go
+++ b/goKMS/main.go
@@ -149,7 +149,7 @@ func main() {
 	}
 
 	// The gnmiTarget implementation uses a flag to pass NO tls, so we have to invert our flag for it to work.
-	gnmiInsecure := !kmsConfig.GnmiTLS.TLS
+	gnmiInsecure := !kmsConfig.GnmiTLS.Active
 	gnmitTarget := gnmitarget.NewGnmiTarget(schema, &gnmitargetygot.Gnmitarget{}, gnmitargetygot.ΓModelData, gnmitargetygot.Unmarshal, gnmitargetygot.ΛEnum, handlers...)
 	if err := gnmitTarget.Start(*gnmiBindAddress, kmsConfig.GnmiTLS.CertFile, kmsConfig.GnmiTLS.KeyFile, kmsConfig.GnmiTLS.CAFile, gnmiInsecure); err != nil {
 		log.Fatal(err)
@@ -160,24 +160,30 @@ func outputTlsSettings(config *config.Config) {
 	currentDirectory, _ := os.Getwd()
 	log.Debugf("current relative file path: %s", currentDirectory)
 
-	log.Infof("TLS enabled for gNMI: %t", config.GnmiTLS.TLS)
-	if config.GnmiTLS.TLS {
+	log.Infof("TLS enabled for gNMI: %t", config.GnmiTLS.Active)
+	if config.GnmiTLS.Active {
 		log.Infof("TLS filepaths for gNMI: ca: %s, cert: %s, key: %s", config.GnmiTLS.CAFile, config.GnmiTLS.CertFile, config.GnmiTLS.KeyFile)
 	}
 
-	log.Infof("TLS enabled for KMS: %t", config.KmsTLS.TLS)
-	if config.KmsTLS.TLS {
+	log.Infof("TLS enabled for KMS: %t", config.KmsTLS.Active)
+	if config.KmsTLS.Active {
 		log.Infof("TLS filepaths for KMS: ca: %s, cert: %s, key: %s", config.KmsTLS.CAFile, config.KmsTLS.CertFile, config.KmsTLS.KeyFile)
 	}
 
-	log.Infof("TLS enabled for Quantum Module: %t", config.QuantumModuleTLS.TLS)
-	if config.QuantumModuleTLS.TLS {
-		log.Infof("TLS filepaths for Quantum Module: ca: %s, cert: %s, key: %s", config.QuantumModuleTLS.CAFile, config.QuantumModuleTLS.CertFile, config.QuantumModuleTLS.KeyFile)
+	for _, peer := range config.Peers {
+		log.Infof("TLS enabled for Quantum Module for peer %s: %t", peer.PeerId, peer.QuantumModule.TLS.Active)
+		if peer.QuantumModule.TLS.Active {
+			log.Infof("TLS filepaths for Quantum Module for peer %s: ca: %s, cert: %s, key: %s", peer.PeerId, peer.QuantumModule.TLS.CAFile, peer.QuantumModule.TLS.CertFile, peer.QuantumModule.TLS.KeyFile)
+		}
 	}
 
-	log.Infof("TLS enabled for AKMS-CKMS interface: %t", config.AkmsCkmsTLS.TLS)
-	if config.AkmsCkmsTLS.TLS {
-		log.Infof("TLS filepaths for AKMS-CKMS interface: ca: %s, cert: %s, key: %s", config.AkmsCkmsTLS.CAFile, config.AkmsCkmsTLS.CertFile, config.AkmsCkmsTLS.KeyFile)
+	log.Infof("TLS enabled for AKMS-CKMS Client interface: %t", config.AKMS.ClientTLS.Active)
+	if config.AKMS.ClientTLS.Active {
+		log.Infof("TLS filepaths for AKMS-CKMS Client interface: ca: %s, cert: %s, key: %s", config.AKMS.ClientTLS.CAFile, config.AKMS.ClientTLS.CertFile, config.AKMS.ClientTLS.KeyFile)
+	}
+	log.Infof("TLS enabled for AKMS-CKMS Server interface: %t", config.AKMS.ServerTLS.Active)
+	if config.AKMS.ServerTLS.Active {
+		log.Infof("TLS filepaths for AKMS-CKMS Server interface: ca: %s, cert: %s, key: %s", config.AKMS.ServerTLS.CAFile, config.AKMS.ServerTLS.CertFile, config.AKMS.ServerTLS.KeyFile)
 	}
 }
 
@@ -193,7 +199,7 @@ func isFlagPassed(name string) bool {
 
 func overwriteConfigFieldsWithFlags(config *config.Config, gnmiBindAddress *string, gnmiTLS *bool, certFile *string, keyFile *string, caFile *string) {
 	if isFlagPassed("gnmiTLS") {
-		config.GnmiTLS.TLS = *gnmiTLS
+		config.GnmiTLS.Active = *gnmiTLS
 	}
 
 	if isFlagPassed("gnmiBindAddress") {
diff --git a/integration-tests/code/getKSAKeyTest/getKSA_key_test.go b/integration-tests/code/getKSAKeyTest/getKSA_key_test.go
index e1e8464bc17dc1e113275a02c010f68cd3abf30f..8fcc70042d87d4cdaf3fb3fbf01d238f3e95f8f4 100644
--- a/integration-tests/code/getKSAKeyTest/getKSA_key_test.go
+++ b/integration-tests/code/getKSAKeyTest/getKSA_key_test.go
@@ -10,6 +10,8 @@ import (
 	"os"
 	"testing"
 
+	"code.fbi.h-da.de/danet/quant/goKMS/config"
+	kmstls "code.fbi.h-da.de/danet/quant/goKMS/kms/tls"
 	utils "code.fbi.h-da.de/danet/quant/integration-tests/code/integrationTestUtils"
 	"github.com/google/uuid"
 	"github.com/stretchr/testify/assert"
@@ -87,7 +89,14 @@ func TestGetKSAKey(t *testing.T) { //nolint:gocyclo
 
 	requestId := uuid.New().String()
 
-	url := fmt.Sprintf("http://%s/api/v1/keys/ksa_key_req", kms1AkmsURL)
+	tlsConfig := config.TLSConfig{
+		Active:   true,
+		CAFile:   "../../../artifacts/integration-tests/ssl/ca.crt",
+		CertFile: "../../../artifacts/integration-tests/ssl/kms/kms2-selfsigned.crt",
+		KeyFile:  "../../../artifacts/integration-tests/ssl/kms/kms2-selfsigned.key",
+	}
+
+	url := fmt.Sprintf("https://%s/api/v1/keys/ksa_key_req", kms1AkmsURL)
 	data := RequestData{
 		ReceivingCKMSID: "5e41c291-6121-4335-84f6-41e04b8bdaa2",
 		RequestID:       requestId,
@@ -99,13 +108,22 @@ func TestGetKSAKey(t *testing.T) { //nolint:gocyclo
 		},
 	}
 
+	tlsConf, err := kmstls.GenerateTLSLibraryConfig(tlsConfig)
+	if err != nil {
+		t.Errorf("Error generating TLS config: %s", err)
+	}
+	transport := &http.Transport{
+		TLSClientConfig: tlsConf,
+	}
+	client := &http.Client{Transport: transport}
+
 	jsonData, err := json.Marshal(data)
 	if err != nil {
 		fmt.Println(err)
 		return
 	}
 
-	resp, err := http.Post(url, "application/json", bytes.NewBuffer(jsonData))
+	resp, err := client.Post(url, "application/json", bytes.NewBuffer(jsonData))
 	if err != nil {
 		t.Errorf("Error making HTTP request: %s", err)
 		return
@@ -117,7 +135,7 @@ func TestGetKSAKey(t *testing.T) { //nolint:gocyclo
 	}
 
 	// Get logfile of akms
-	resp, err = http.Get("http://" + logFileURL + "/debug/get_log_file")
+	resp, err = client.Get("https://" + logFileURL + "/debug/get_log_file")
 	if err != nil {
 		t.Errorf("Error making HTTP request: %s", err)
 		return
@@ -143,7 +161,23 @@ func TestGetKSAKey(t *testing.T) { //nolint:gocyclo
 	assert.NotNil(t, logFile.Body.KSAKeys[0].KeyID)
 	assert.NotNil(t, logFile.Body.KSAKeys[0].Key)
 
-	resp, err = http.Get("http://" + logFileURL2 + "/debug/get_log_file")
+	tlsConfig = config.TLSConfig{
+		Active:   true,
+		CAFile:   "../../../artifacts/integration-tests/ssl/ca.crt",
+		CertFile: "../../../artifacts/integration-tests/ssl/kms/kms1-selfsigned.crt",
+		KeyFile:  "../../../artifacts/integration-tests/ssl/kms/kms1-selfsigned.key",
+	}
+
+	tlsConf, err = kmstls.GenerateTLSLibraryConfig(tlsConfig)
+	if err != nil {
+		t.Errorf("Error generating TLS config: %s", err)
+	}
+	transport = &http.Transport{
+		TLSClientConfig: tlsConf,
+	}
+	client = &http.Client{Transport: transport}
+
+	resp, err = client.Get("https://" + logFileURL2 + "/debug/get_log_file")
 	if err != nil {
 		t.Errorf("Error making HTTP request: %s", err)
 		return
diff --git a/integration-tests/config/kms/kms_1.yaml b/integration-tests/config/kms/kms_1.yaml
index c65e69a22f8acdbaf30806f02d0dabc40b0dae84..1e071d561c0064683422460e1e638eceaeb6dacf 100644
--- a/integration-tests/config/kms/kms_1.yaml
+++ b/integration-tests/config/kms/kms_1.yaml
@@ -1,24 +1,35 @@
-Id: '0ff33c82-7fe1-482b-a0ca-67565806ee4b'
+Id: "0ff33c82-7fe1-482b-a0ca-67565806ee4b"
 Name: kms01
 InterComAddr: 0.0.0.0:50910
 QuantumAddr: 0.0.0.0:50911
-AkmsURL: "http://akms-simulator_1:4444/api/v1/keys/push_ksa_key"
-AkmsCkmsServerPort: "9696"
+AKMS:
+  RemoteAddress: "https://akms-simulator_1:4444/api/v1/keys/push_ksa_key"
+  ServerPort: "9696"
+  ClientTLS:
+    Active: true
+    CAFile: "config/ssl/ca.crt"
+    CertFile: "config/ssl/kms/kms1-selfsigned.crt"
+    KeyFile: "config/ssl/kms/kms1-selfsigned.key"
+  ServerTLS:
+    Active: true
+    CAFile: "config/ssl/ca.crt"
+    CertFile: "config/ssl/kms/kms1-selfsigned.crt"
+    KeyFile: "config/ssl/kms/kms1-selfsigned.key"
 GRPCTimeoutInSeconds: 600
 KmsTLS:
-  TLS: false
+  Active: false
   CAFile: "config/ssl/ca.crt"
   CertFile: "config/ssl/kms/kms1-selfsigned.crt"
   KeyFile: "config/ssl/kms/kms1-selfsigned.key"
 Peers:
-    # peer to kms02
-    - PeerId: '5e41c291-6121-4335-84f6-41e04b8bdaa2'
-      PeerInterComAddr: kms02:50910
-      Type: danet
-      # quantum module of type emulated at the given address
-      QuantumModule:
-          Type: emulated
-          Hostname: quantumlayer_1
+  # peer to kms02
+  - PeerId: "5e41c291-6121-4335-84f6-41e04b8bdaa2"
+    PeerInterComAddr: kms02:50910
+    Type: danet
+    # quantum module of type emulated at the given address
+    QuantumModule:
+      Type: emulated
+      Hostname: quantumlayer_1
 ETSI14Server:
   Address: ":1414"
   RemoteCKMSID: "5e41c291-6121-4335-84f6-41e04b8bdaa2"
diff --git a/integration-tests/config/kms/kms_2.yaml b/integration-tests/config/kms/kms_2.yaml
index 3b8f226c18a2c99803a7dd1cc5f2819c4077147a..58c54adee5ecd726acbb3785ad24970d7c7b25a4 100644
--- a/integration-tests/config/kms/kms_2.yaml
+++ b/integration-tests/config/kms/kms_2.yaml
@@ -1,24 +1,35 @@
-Id: '5e41c291-6121-4335-84f6-41e04b8bdaa2'
+Id: "5e41c291-6121-4335-84f6-41e04b8bdaa2"
 Name: kms02
 InterComAddr: 0.0.0.0:50910
 QuantumAddr: 0.0.0.0:50911
-AkmsURL: "http://akms-simulator_2:4444/api/v1/keys/push_ksa_key"
-AkmsCkmsServerPort: "9696"
+AKMS:
+  RemoteAddress: "https://akms-simulator_2:4444/api/v1/keys/push_ksa_key"
+  ServerPort: "9696"
+  ClientTLS:
+    Active: true
+    CAFile: "config/ssl/ca.crt"
+    CertFile: "config/ssl/kms/kms2-selfsigned.crt"
+    KeyFile: "config/ssl/kms/kms2-selfsigned.key"
+  ServerTLS:
+    Active: true
+    CAFile: "config/ssl/ca.crt"
+    CertFile: "config/ssl/kms/kms2-selfsigned.crt"
+    KeyFile: "config/ssl/kms/kms2-selfsigned.key"
 GRPCTimeoutInSeconds: 600
 KmsTLS:
-  TLS: false
+  Active: false
   CAFile: "config/ssl/ca.crt"
   CertFile: "config/ssl/kms/kms2-selfsigned.crt"
   KeyFile: "config/ssl/kms/kms2-selfsigned.key"
 Peers:
-    # peer to kms01
-    - PeerId: '0ff33c82-7fe1-482b-a0ca-67565806ee4b'
-      PeerInterComAddr: kms01:50910
-      Type: danet
-      # quantum module of type emulated at the given address
-      QuantumModule:
-          Type: emulated
-          Hostname: quantumlayer_2
+  # peer to kms01
+  - PeerId: "0ff33c82-7fe1-482b-a0ca-67565806ee4b"
+    PeerInterComAddr: kms01:50910
+    Type: danet
+    # quantum module of type emulated at the given address
+    QuantumModule:
+      Type: emulated
+      Hostname: quantumlayer_2
 ETSI14Server:
   Address: ":1414"
   RemoteCKMSID: "0ff33c82-7fe1-482b-a0ca-67565806ee4b"
diff --git a/integration-tests/config/kms/tlsConfigs/kms1ReqConfig.txt b/integration-tests/config/kms/tlsConfigs/kms1ReqConfig.txt
index 7171d5753bec78b113c77faafd7194979b97a7d8..4d46bd8d2890ae890d1952dd394bdd3ddf1fceb3 100644
--- a/integration-tests/config/kms/tlsConfigs/kms1ReqConfig.txt
+++ b/integration-tests/config/kms/tlsConfigs/kms1ReqConfig.txt
@@ -13,4 +13,7 @@ keyUsage = keyEncipherment, dataEncipherment
 extendedKeyUsage = serverAuth, clientAuth
 subjectAltName = @alt_names
 [alt_names]
+IP.1 = 127.0.0.1
 DNS.1 = kms01
+DNS.2 = akms-simulator_1
+DNS.3 = akms-simulator_2
diff --git a/integration-tests/config/kms/tlsConfigs/kms2ReqConfig.txt b/integration-tests/config/kms/tlsConfigs/kms2ReqConfig.txt
index c990896c7f806945b55abde73504b112cab07e82..8701d1e000f4221d56e18c83cc0bb67e90db29bf 100644
--- a/integration-tests/config/kms/tlsConfigs/kms2ReqConfig.txt
+++ b/integration-tests/config/kms/tlsConfigs/kms2ReqConfig.txt
@@ -13,4 +13,7 @@ keyUsage = keyEncipherment, dataEncipherment
 extendedKeyUsage = serverAuth, clientAuth
 subjectAltName = @alt_names
 [alt_names]
+IP.1 = 127.0.0.1
 DNS.1 = kms02
+DNS.2 = akms-simulator_1
+DNS.3 = akms-simulator_2
diff --git a/integration-tests/docker-compose.yml b/integration-tests/docker-compose.yml
index b8a05d7624ea1c9c352d23a44b94898006fa1db4..72213b09dea4cf235ffa6856810f8af608c7270f 100644
--- a/integration-tests/docker-compose.yml
+++ b/integration-tests/docker-compose.yml
@@ -1,89 +1,109 @@
 services:
-    kms01:
-        image: gokms
-        command:
-            [ "--log", "debug", "--kms_config", "/tmp/kms/config/kms_1.yaml" ]
-        volumes:
-            - ./config/kms/kms_1.yaml:/tmp/kms/config/kms_1.yaml
-            - ../artifacts/integration-tests/ssl:/config/ssl
-        ports:
-            - "127.0.0.1:7030:7030"
-            - "127.0.0.1:9696:9696"
-            - "127.0.0.1:1414:1414"
+  kms01:
+    image: gokms
+    command: ["--log", "debug", "--kms_config", "/tmp/kms/config/kms_1.yaml"]
+    volumes:
+      - ./config/kms/kms_1.yaml:/tmp/kms/config/kms_1.yaml
+      - ../artifacts/integration-tests/ssl:/config/ssl
+    ports:
+      - "127.0.0.1:7030:7030"
+      - "127.0.0.1:9696:9696"
+      - "127.0.0.1:1414:1414"
 
-    kms02:
-        image: gokms
-        command:
-            [ "--log", "debug", "--kms_config", "/tmp/kms/config/kms_2.yaml" ]
-        volumes:
-            - ./config/kms/kms_2.yaml:/tmp/kms/config/kms_2.yaml
-            - ../artifacts/integration-tests/ssl:/config/ssl
-        ports:
-            - "127.0.0.1:7031:7030"
-            - "127.0.0.1:1415:1414"
+  kms02:
+    image: gokms
+    command: ["--log", "debug", "--kms_config", "/tmp/kms/config/kms_2.yaml"]
+    volumes:
+      - ./config/kms/kms_2.yaml:/tmp/kms/config/kms_2.yaml
+      - ../artifacts/integration-tests/ssl:/config/ssl
+    ports:
+      - "127.0.0.1:7031:7030"
+      - "127.0.0.1:1415:1414"
 
-    quantumlayer_1:
-        image: quantumlayer
-        command:
-            [
-                "--log",
-                "debug",
-                "--config",
-                "/tmp/quantumlayer/config/quantumlayer_1.yaml",
-            ]
-        volumes:
-            - ./config/quantumlayer/quantumlayer_1.yaml:/tmp/quantumlayer/config/quantumlayer_1.yaml
+  quantumlayer_1:
+    image: quantumlayer
+    command:
+      [
+        "--log",
+        "debug",
+        "--config",
+        "/tmp/quantumlayer/config/quantumlayer_1.yaml",
+      ]
+    volumes:
+      - ./config/quantumlayer/quantumlayer_1.yaml:/tmp/quantumlayer/config/quantumlayer_1.yaml
 
-    quantumlayer_2:
-        image: quantumlayer
-        command:
-            [
-                "--log",
-                "debug",
-                "--config",
-                "/tmp/quantumlayer/config/quantumlayer_2.yaml",
-            ]
-        volumes:
-            - ./config/quantumlayer/quantumlayer_2.yaml:/tmp/quantumlayer/config/quantumlayer_2.yaml
+  quantumlayer_2:
+    image: quantumlayer
+    command:
+      [
+        "--log",
+        "debug",
+        "--config",
+        "/tmp/quantumlayer/config/quantumlayer_2.yaml",
+      ]
+    volumes:
+      - ./config/quantumlayer/quantumlayer_2.yaml:/tmp/quantumlayer/config/quantumlayer_2.yaml
 
-    akms-simulator_1:
-        image: akms-simulator
-        ports:
-            - "127.0.0.1:4444:4444"
+  akms-simulator_1:
+    image: akms-simulator
+    ports:
+      - "127.0.0.1:4444:4444"
+    volumes:
+      - ../artifacts/integration-tests/ssl:/config/ssl
+    command:
+      [
+        "--ca",
+        "config/ssl/ca.crt",
+        "--cert",
+        "config/ssl/kms/kms2-selfsigned.crt",
+        "--key",
+        "config/ssl/kms/kms2-selfsigned.key",
+      ]
 
-    akms-simulator_2:
-        image: akms-simulator
-        ports:
-            - "127.0.0.1:4445:4444"
+  akms-simulator_2:
+    image: akms-simulator
+    volumes:
+      - ../artifacts/integration-tests/ssl:/config/ssl
+    ports:
+      - "127.0.0.1:4445:4444"
+    command:
+      [
+        "--ca",
+        "config/ssl/ca.crt",
+        "--cert",
+        "config/ssl/kms/kms1-selfsigned.crt",
+        "--key",
+        "config/ssl/kms/kms1-selfsigned.key",
+      ]
 
-    qkdn-controller:
-      image: registry.code.fbi.h-da.de/demoquandt/qkdn-controller:qkdn-main
-      volumes:
-        - ./config/controller/qkdn-gosdn.toml:/app/configs/qkdn-gosdn.toml
-        - ./config/controller/gNMISubscriptions.txt:/app/configs/gNMISubscriptions.txt
-      command: --config ./configs/qkdn-gosdn.toml
-      ports:
-        - 0.0.0.0:55055:55055
-        - 127.0.0.1:8080:8080
-        - 127.0.0.1:40000:40000
-      environment:
-        GOSDN_ADMIN_PASSWORD: TestPassword
+  qkdn-controller:
+    image: registry.code.fbi.h-da.de/demoquandt/qkdn-controller:qkdn-main
+    volumes:
+      - ./config/controller/qkdn-gosdn.toml:/app/configs/qkdn-gosdn.toml
+      - ./config/controller/gNMISubscriptions.txt:/app/configs/gNMISubscriptions.txt
+    command: --config ./configs/qkdn-gosdn.toml
+    ports:
+      - 0.0.0.0:55055:55055
+      - 127.0.0.1:8080:8080
+      - 127.0.0.1:40000:40000
+    environment:
+      GOSDN_ADMIN_PASSWORD: TestPassword
 
-    plugin-registry:
-      image: registry.code.fbi.h-da.de/demoquandt/qkdn-controller/plugin-registry:qkdn-main
+  plugin-registry:
+    image: registry.code.fbi.h-da.de/demoquandt/qkdn-controller/plugin-registry:qkdn-main
 
-    mongo:
-      image: mongo:7
-      environment:
-        MONGO_INITDB_ROOT_USERNAME: root
-        MONGO_INITDB_ROOT_PASSWORD: example
+  mongo:
+    image: mongo:7
+    environment:
+      MONGO_INITDB_ROOT_USERNAME: root
+      MONGO_INITDB_ROOT_PASSWORD: example
 
-    rabbitmq:
-      image: rabbitmq:3-management
+  rabbitmq:
+    image: rabbitmq:3-management
 
-    routing-app:
-      image: registry.code.fbi.h-da.de/demoquandt/qkdn-controller/routing-app:qkdn-main
-      entrypoint: ["./start_ra_sleep.sh"]
-      volumes:
-        - ./config/controller/start_ra_sleep.sh:/app/start_ra_sleep.sh
-        - ./config/controller/routing-config.yaml:/new/routing-config.yaml
+  routing-app:
+    image: registry.code.fbi.h-da.de/demoquandt/qkdn-controller/routing-app:qkdn-main
+    entrypoint: ["./start_ra_sleep.sh"]
+    volumes:
+      - ./config/controller/start_ra_sleep.sh:/app/start_ra_sleep.sh
+      - ./config/controller/routing-config.yaml:/new/routing-config.yaml
diff --git a/quantumlayer/Dockerfile b/quantumlayer/Dockerfile
index cb231919fc97957ba331bc780fdbf7f93c71b2b5..0a27cf2fad4883aaf202c055a940856615596bea 100644
--- a/quantumlayer/Dockerfile
+++ b/quantumlayer/Dockerfile
@@ -1,4 +1,4 @@
-ARG GOLANG_VERSION=1.22
+ARG GOLANG_VERSION=1.23
 ARG BUILDARGS
 ARG GITLAB_PROXY