Files
certigo-dummy-ca/example.sh
2025-11-20 13:30:08 +01:00

89 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
# Beispiel-Skript zum Testen der Dummy CA API
set -e
CA_URL="http://localhost:8088"
echo "=== Dummy CA Test ==="
echo ""
# 1. Health-Check
echo "1. Health-Check..."
HEALTH_RESPONSE=$(curl -s -w "\n%{http_code}" "$CA_URL/health")
HTTP_CODE=$(echo "$HEALTH_RESPONSE" | tail -n1)
BODY=$(echo "$HEALTH_RESPONSE" | sed '$d')
if [ "$HTTP_CODE" = "200" ]; then
echo "$BODY" | jq . 2>/dev/null || echo "$BODY"
echo "✓ Server ist erreichbar"
else
echo "✗ Server nicht erreichbar (HTTP $HTTP_CODE)"
echo " Stelle sicher, dass der Server auf Port 8088 läuft:"
echo " go run main.go"
exit 1
fi
echo ""
# 2. Private Key und CSR erstellen
echo "2. Erstelle Private Key und CSR..."
openssl genrsa -out test.key 2048 2>/dev/null
openssl req -new -key test.key -out test.csr -subj "/CN=test.example.com/O=Test Org" 2>/dev/null
echo "✓ Private Key und CSR erstellt"
echo ""
# 3. CSR kodieren und einreichen
echo "3. Reiche CSR ein..."
CSR_B64=$(cat test.csr | base64 -w 0)
RESPONSE=$(curl -s -X POST "$CA_URL/csr" \
-H "Content-Type: application/json" \
-d "{
\"csr\": \"$CSR_B64\",
\"action\": \"sign\",
\"validity_days\": 365
}")
CERT_ID=$(echo $RESPONSE | jq -r '.id' 2>/dev/null)
if [ -z "$CERT_ID" ] || [ "$CERT_ID" = "null" ]; then
echo "✗ Fehler beim Signieren des CSR:"
echo "$RESPONSE" | jq . 2>/dev/null || echo "$RESPONSE"
exit 1
fi
echo "✓ CSR signiert - Zertifikat-ID: $CERT_ID"
echo ""
# 4. Zertifikat abrufen
echo "4. Rufe Zertifikat ab..."
curl -s "$CA_URL/certificate/$CERT_ID" | jq -r '.certificate' > test.crt
echo "✓ Zertifikat gespeichert in test.crt"
echo ""
# 5. Root-Zertifikat abrufen
echo "5. Rufe Root-Zertifikat ab..."
curl -s "$CA_URL/root" > root.crt
echo "✓ Root-Zertifikat gespeichert in root.crt"
echo ""
# 6. Zertifikat-Details anzeigen
echo "6. Zertifikat-Details:"
openssl x509 -in test.crt -text -noout | head -20
echo ""
# 7. Zertifikat mit Root verifizieren
echo "7. Verifiziere Zertifikat mit Root-CA..."
if openssl verify -CAfile root.crt test.crt > /dev/null 2>&1; then
echo "✓ Zertifikat ist gültig!"
else
echo "✗ Zertifikat-Verifizierung fehlgeschlagen"
fi
echo ""
echo "=== Test abgeschlossen ==="
echo "Dateien:"
echo " - test.key (Private Key)"
echo " - test.csr (Certificate Signing Request)"
echo " - test.crt (Signiertes Zertifikat)"
echo " - root.crt (Root-Zertifikat)"