summaryrefslogtreecommitdiffstats
path: root/request_cert.sh
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2025-04-06 18:21:55 +0200
committertv <tv@krebsco.de>2025-04-06 18:21:55 +0200
commit6931db7d7ecaf831ec08acf9ed9f1a5175804bef (patch)
tree167871930359b2706d3b1879265665f604148b0d /request_cert.sh
initial commit
Diffstat (limited to 'request_cert.sh')
-rw-r--r--request_cert.sh43
1 files changed, 43 insertions, 0 deletions
diff --git a/request_cert.sh b/request_cert.sh
new file mode 100644
index 0000000..a3d37e2
--- /dev/null
+++ b/request_cert.sh
@@ -0,0 +1,43 @@
+#!/usr/bin/bash
+# Usage: request_cert.sh <filename.json>
+# Sample JSON:
+# {
+# "common_name": "",
+# "alt_names": "",
+# "ip_sans": "212.12.255.3,212.12.255.4,213.12.255.3,213.12.255.4",
+# "ttl": "180d"
+
+# }
+#
+# Simple Usage: request_cert.sh -s <fqdn>
+#
+
+if [ -z "${VAULT_TOKEN}" ]; then
+ read -p USER: LDAPUSER
+ read -s -p PASSWORD: LPDAPASSWD
+ VAULT_TOKEN=$( curl -s -X POST -H "Content-Type: application/json" -d "{ \"password\": \"$LPDAPASSWD\"}" https://vault.dings:8200/v1/auth/ldap/login/$LDAPUSER | jq -r ".auth.client_token" )
+ echo $VAULT_TOKEN
+fi
+
+
+if [ -z "$1" ]; then
+ echo "USAGE: $0 -s <fqdn>|<filename>"
+ exit 1
+fi
+
+if [ "$1" == "-s" ]; then
+ CN=$2
+ DATA=$( curl -s --header "X-Vault-Token: $VAULT_TOKEN" --request POST --data "{ \"common_name\": \"$CN\", \"ttl\": \"90d\" }" https://vault.dings:8200/v1/pki_rz_q-ca_2021aa/issue/rz-drv )
+else
+ CN=$( cat $1 | jq -r ".common_name" )
+ DATA=$( curl -s --header "X-Vault-Token: $VAULT_TOKEN" --request POST --data @$1 https://vault.dings:8200/v1/pki_rz_q-ca_2021aa/issue/rz-drv )
+fi
+
+[ -d $CN ] && rm -r $CN
+mkdir $CN || exit 1
+
+echo $DATA > $CN/$CN.json
+echo $DATA | jq -r '.data.certificate' > $CN/$CN.cer
+echo $DATA | jq -r '.data.private_key' > $CN/$CN.key
+echo $DATA | jq -r '.data.ca_chain|join("\n")' > $CN/$CN.ca_chain
+cat $CN/$CN.cer $CN/$CN.ca_chain > $CN/$CN.cer_with_ca_chain