diff --git a/handle_server/generate_keys.sh b/handle_server/generate_keys.sh
new file mode 100755
index 0000000000000000000000000000000000000000..3ab8f4fea2147fbb82fa97b3b4a06b9bd74f7d31
--- /dev/null
+++ b/handle_server/generate_keys.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+PUBKEY=${PUBKEY:-"pubkey"}
+PRIVKEY=${PRIVKEY:-"privkey"}
+HDL_CMD=${HDL_CMD:-"/home/tf/src/fdo/handle-server/handle-9.3.1/bin/hdl"}
+CONVERT="$HDL_CMD convert-key"
+
+openssl genrsa -out ${PRIVKEY}.pem 2048
+openssl rsa -in ${PRIVKEY}.pem -pubout -out ${PUBKEY}.pem
+$CONVERT -format handle -o ${PRIVKEY}.bin ${PRIVKEY}.pem
+$CONVERT -format handle -o ${PUBKEY}.bin ${PUBKEY}.pem
+$CONVERT -format jwk -o ${PUBKEY}.json ${PUBKEY}.pem
+
+rm ${PUBKEY}.pem
+rm ${PRIVKEY}.pem
diff --git a/handle_server/generate_siteinfo.sh b/handle_server/generate_siteinfo.sh
new file mode 100755
index 0000000000000000000000000000000000000000..0042b84c6a0ba35ba3b25899264457e31446a142
--- /dev/null
+++ b/handle_server/generate_siteinfo.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+. ../.env
+
+RSA_KEY_N="$(cat pubkey.json | jq .n)"
+RSA_KEY_E="$(cat pubkey.json | jq .e)"
+
+sed "s/__DESCRIPTION__/${HANDLE_SERVER_DESCRIPTION}/g" siteinfo.template.json \
+    | sed "s/__ADDRESS__/${HANDLE_SERVER_IPV4_ADDRESS}/g" \
+    | sed "s/\"__KEY_N__\"/${RSA_KEY_N}/g" \
+    | sed "s/\"__KEY_E__\"/${RSA_KEY_E}/g" \
+    > siteinfo.json
diff --git a/handle_server/siteinfo.template.json b/handle_server/siteinfo.template.json
new file mode 100644
index 0000000000000000000000000000000000000000..77a609433995f2d3987f95d1532cf018c9f85eb5
--- /dev/null
+++ b/handle_server/siteinfo.template.json
@@ -0,0 +1,47 @@
+{
+  "version": 1,
+  "protocolVersion": "2.11",
+  "serialNumber": 1,
+  "primarySite": true,
+  "multiPrimary": false,
+  "attributes": [
+    {
+      "name": "desc",
+      "value": "__HANDLE_SERVER_DESCRIPTION__"
+    }
+  ],
+  "servers": [
+    {
+      "serverId": 1,
+      "address": "__HANDLE_SERVER_IPV4_ADDRESS__",
+      "publicKey": {
+        "format": "key",
+        "value": {
+          "kty": "RSA",
+          "n": "__HANDLE_SERVER_PUBKEY_RSA_N__",
+          "e": "__HANDLE_SERVER_PUBKEY_RSA_E__"
+        }
+      },
+      "interfaces": [
+        {
+          "query": true,
+          "admin": true,
+          "protocol": "TCP",
+          "port": __HANDLE_SERVER_TCP_PORT__
+        },
+        {
+          "query": true,
+          "admin": false,
+          "protocol": "UDP",
+          "port": __HANDLE_SERVER_UDP_PORT__
+        },
+        {
+          "query": true,
+          "admin": true,
+          "protocol": "HTTP",
+          "port": __HANDLE_SERVER_HTTP_PORT__
+        }
+      ]
+    }
+  ]
+}