diff --git a/pages/keys.ftl b/pages/keys.ftl
new file mode 100644
index 00000000..6ce59f77
--- /dev/null
+++ b/pages/keys.ftl
@@ -0,0 +1,46 @@
+<#import "/templates/template.ftl" as tmpl>
+
+<@tmpl.page current="keys" title="Keycloak Signing Keys">
+
+
+
Keycloak Signing Keys
+
+
+ We use a number of keys to sign artifacts. At the moment we are only signing Maven artifacts and
+ the Terraform provider, but are looking to expanding this to downloads from the website and containers
+ in the future.
+
+
+
+
+ ID |
+ UID |
+ Usage |
+ Key |
+
+
+ 861ab50e8cc6611fb6bc01a6b8f12ea26fd6eeba |
+ Keycloak Bot keycloak.bot@gmail.com |
+ Maven artifacts after January 2024 |
+
+
+
+ asc
+
+ |
+
+
+ d77f6183986627e454951a5ca63faed146e27e2a |
+ Keycloak Terraform Team keycloak-maintainers@googlegroups.com> |
+ Terraform provider |
+
+
+
+ asc
+
+ |
+
+
+
+
+@tmpl.page>
diff --git a/src/main/java/org/keycloak/webbuilder/builders/AppBuilder.java b/src/main/java/org/keycloak/webbuilder/builders/AppBuilder.java
index 3386e5f4..1406a10b 100644
--- a/src/main/java/org/keycloak/webbuilder/builders/AppBuilder.java
+++ b/src/main/java/org/keycloak/webbuilder/builders/AppBuilder.java
@@ -9,8 +9,10 @@
import org.keycloak.webbuilder.utils.JsonParser;
import java.io.File;
+import java.nio.file.CopyOption;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.nio.file.StandardCopyOption;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
@@ -59,7 +61,7 @@ private void installPackage(String name, String version) throws Exception {
// Resolve target path and copy file.
Path targetPath = installationPath.resolve(entryPath);
Files.createDirectories(targetPath.getParent());
- Files.copy(tarball, targetPath);
+ Files.copy(tarball, targetPath, StandardCopyOption.REPLACE_EXISTING);
}
// Add package to the imports so it can be written to the import map later.
diff --git a/static/keys/keycloak-2.asc b/static/keys/keycloak-2.asc
new file mode 100644
index 00000000..25c1b04a
--- /dev/null
+++ b/static/keys/keycloak-2.asc
@@ -0,0 +1,16 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Comment: Hostname:
+Version: Hockeypuck 2.2
+
+xjMEZcsYGxYJKwYBBAHaRw8BAQdAA32swlQ3Z3tyI0iJAY0XMQEVwUXe7nHnjKWs
+OCdIPNjNJUtleWNsb2FrIEJvdCA8a2V5Y2xvYWsuYm90QGdtYWlsLmNvbT7CmQQT
+FgoAQRYhBIYatQ6MxmEftrwBprjxLqJv1u66BQJlyxgbAhsDBQkFo5qABQsJCAcC
+AiICBhUKCQgLAgQWAgMBAh4HAheAAAoJELjxLqJv1u66mOwBANRuVTHzqTknxFKQ
+pi5Mrb2oBbImTEgLkiUYzKidRMlxAP9C01g/l1/6EqGoW8EVwx5ZpjvoyPa9xGrH
+oYk8lSh8Ds44BGXLGBsSCisGAQQBl1UBBQEBB0BP0g9y7SpLR8mx+JvOKLactT1O
+ukxvjuc25/TqxVKDJQMBCAfCfgQYFgoAJhYhBIYatQ6MxmEftrwBprjxLqJv1u66
+BQJlyxgbAhsMBQkFo5qAAAoJELjxLqJv1u66L0sBANSOIz9YtRp6lKeUf/MFp7aX
+F3SbVD+A1zcxAkG7zb8UAP9wEZEe9LJRj+vvMA//B2dkldazB5XSd8kQMzbCZHwL
+Cw==
+=IJm3
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/static/keys/keycloak-terraform-1.asc b/static/keys/keycloak-terraform-1.asc
new file mode 100644
index 00000000..171a39d4
--- /dev/null
+++ b/static/keys/keycloak-terraform-1.asc
@@ -0,0 +1,52 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+=65co
+-----END PGP PUBLIC KEY BLOCK-----