Erste Schritte
Senden Sie Ihren ersten Schwachstellenscan in unter 5 Minuten. Diese Anleitung begleitet Sie beim Erhalten eines API-SchlĂĽssels, Einreichen eines Scans, PrĂĽfen des Status und Abrufen der Ergebnisse.
Voraussetzungen​
Stellen Sie vor dem Start sicher, dass Sie Folgendes haben:
- âś… Ein aktives Cert-IX-Konto mit Zugang zur Scan-API
- âś… Zugang zum Cert-IX-Dashboard fĂĽr die API-SchlĂĽsselverwaltung
- âś… cURL oder einen beliebigen HTTP-Client (Python
requests, Postman, etc.)
Schritt 1: API-Schlüssel erhalten​
- Melden Sie sich beim Cert-IX-Dashboard an
- Navigieren Sie zu Einstellungen → API-Schlüssel
- Klicken Sie auf API-SchlĂĽssel erstellen
- Konfigurieren Sie den SchlĂĽssel:
- Name: Vergeben Sie einen beschreibenden Namen (z.B.: «Mein erster Scan-Schlüssel»)
- Bereiche: Wählen Sie mindestens
scans:create,scans:read,results:read - Ablauf: Legen Sie einen angemessenen Ablauf fest (z.B.: 90 Tage)
- Klicken Sie auf Erstellen und kopieren Sie den SchlĂĽssel sofort
Der Klartext-API-Schlüssel wird nur einmal bei der Erstellung angezeigt. Speichern Sie ihn sicher in einem Passwort-Manager oder Secret-Tresor. Cert-IX kann ihn nachträglich nicht wiederherstellen.
Legen Sie den SchlĂĽssel als Umgebungsvariable fest:
export CERTIX_API_KEY="cix_sk_ihr_api_schluessel_hier"
Schritt 2: Ersten Scan einreichen​
Starten wir einen einfachen Nmap-Netzwerkscan auf ein Ziel:
curl -X POST https://api.cert-ix.com/scan-api/api/v1/scans \
-H "X-API-Key: $CERTIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target": "example.com",
"scanType": "nmap",
"name": "Mein erster Scan",
"options": {
"ports": "1-1024",
"timing": "T3",
"serviceDetection": true
}
}'
Antwort:
{
"success": true,
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"scanType": "nmap",
"name": "Mein erster Scan",
"target": "example.com",
"status": "queued",
"priority": "normal",
"progress": 0,
"createdAt": "2026-03-06T10:00:00Z"
}
}
Kopieren Sie die id aus der Antwort — Sie benötigen sie, um den Status zu prüfen und die Ergebnisse abzurufen.
export SCAN_ID="a1b2c3d4-e5f6-7890-abcd-ef1234567890"
Schritt 3: Scan-Status prüfen​
Scans werden asynchron ausgefĂĽhrt. Fragen Sie den Status-Endpunkt ab, um den Fortschritt zu verfolgen:
curl -X GET "https://api.cert-ix.com/scan-api/api/v1/scans/$SCAN_ID?scanType=nmap" \
-H "X-API-Key: $CERTIX_API_KEY"
Antwort (in Bearbeitung):
{
"success": true,
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "running",
"progress": 67
}
}
Antwort (abgeschlossen):
{
"success": true,
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "completed",
"progress": 100,
"resultCount": 12,
"durationMs": 135000
}
}
Statuswerte​
| Status | Bedeutung |
|---|---|
queued | Akzeptiert, wartet auf Scanner-Kapazität |
running | Scanner fĂĽhrt den Scan aktiv aus |
completed | Erfolgreich abgeschlossen — Ergebnisse verfügbar |
failed | Schwerwiegender Fehler aufgetreten |
cancelled | Vom Benutzer abgebrochen |
Schritt 4: Ergebnisse abrufen​
Sobald der Status completed ist, rufen Sie die vollständigen Ergebnisse ab:
curl -X GET "https://api.cert-ix.com/scan-api/api/v1/scans/$SCAN_ID/results?scanType=nmap" \
-H "X-API-Key: $CERTIX_API_KEY"
Antwort:
{
"success": true,
"data": {
"scanId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"scanType": "nmap",
"target": "example.com",
"status": "completed",
"results": {
"hosts": [
{
"ip": "93.184.216.34",
"hostname": "example.com",
"state": "up",
"ports": [
{ "port": 80, "protocol": "tcp", "state": "open", "service": "http", "version": "nginx 1.25.4" },
{ "port": 443, "protocol": "tcp", "state": "open", "service": "https", "version": "nginx 1.25.4" }
]
}
],
"stats": { "hostsUp": 1, "openPorts": 2, "closedPorts": 1022 }
}
}
}
Vollständiges Skript​
Vollständiges Bash-Skript, das den gesamten Workflow automatisiert:
#!/bin/bash
# Cert-IX Scan-API — Vollständiger Scan-Workflow
set -euo pipefail
API_KEY="${CERTIX_API_KEY:?Setzen Sie die Umgebungsvariable CERTIX_API_KEY}"
BASE_URL="https://api.cert-ix.com/scan-api/api/v1"
TARGET="${1:-example.com}"
echo "🔍 Sende Nmap-Scan für: $TARGET"
RESPONSE=$(curl -s -X POST "$BASE_URL/scans" \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d "{
\"target\": \"$TARGET\",
\"scanType\": \"nmap\",
\"name\": \"Schnellscan - $TARGET\",
\"options\": { \"ports\": \"1-1024\", \"timing\": \"T3\", \"serviceDetection\": true }
}")
SCAN_ID=$(echo "$RESPONSE" | jq -r '.data.id')
echo "âś… Scan eingereicht: $SCAN_ID"
echo "⏳ Warte auf Scan-Abschluss..."
while true; do
STATUS_RESP=$(curl -s -X GET "$BASE_URL/scans/$SCAN_ID?scanType=nmap" -H "X-API-Key: $API_KEY")
STATUS=$(echo "$STATUS_RESP" | jq -r '.data.status')
PROGRESS=$(echo "$STATUS_RESP" | jq -r '.data.progress')
echo " Status: $STATUS ($PROGRESS%)"
case "$STATUS" in
completed) break ;;
failed) echo "❌ Scan fehlgeschlagen"; exit 1 ;;
cancelled) echo "⚠️ Scan abgebrochen"; exit 1 ;;
esac
sleep 5
done
echo "📊 Ergebnisse abrufen..."
curl -s -X GET "$BASE_URL/scans/$SCAN_ID/results?scanType=nmap" -H "X-API-Key: $API_KEY" | jq .
echo "✨ Abgeschlossen!"
Was kommt als Nächstes?​
- Authentifizierung und API-Schlüssel — Bereiche, Rotation, IP-Allowlisting
- Scans einreichen — Alle 10 Engines mit detaillierten Optionen
- Webhooks — Echtzeit-Benachrichtigungen statt Polling
- Code-Beispiele — Produktionsbereite Clients in Python, Go und Node.js
Verwenden Sie fĂĽr Produktionsintegrationen Webhooks statt Polling. Webhooks liefern sofortige Benachrichtigungen und verbrauchen kein API-Kontingent fĂĽr StatusprĂĽfungen.