Mo–Fr: 09:00–17:00 Sa–So: geschlossen
03578 310535 info@formality.de
FORMALITY Deutschland 01917 Kamenz
VAPID Key Generator
VAPID Keys für Web Push erzeugen
Erzeugen Sie mit nur einem Klick das benötigte VAPID-Schlüsselpaar für moderne Push-Dienste. Erstellen Sie die Schlüssel direkt im Browser und kopieren Sie das fertige Payload-Format nahtlos in Ihre Anwendung.
VAPID Key Generator
Generiere ein sicheres Schlüsselpaar für Web Push Notifications. Die E-Mail-Adresse wird als `mailto:`-Subject für die Push-Dienste hinterlegt.
Deep Dive: VAPID & Web Push Technologie
Spezifikationen
- Kryptografie: Verwendet Elliptic Curve Digital Signature Algorithm (ECDSA) auf der P-256 Kurve.
- Kodierung: Alle Schlüssel müssen im Base64-URL-Format vorliegen (ohne Padding, '-' statt '+', '_' statt '/').
- Token-Struktur: Der Server sendet ein JWT (JSON Web Token), das mit dem Private Key signiert wurde, im `Authorization`-Header der Push-Anfrage.
Der Workflow
- Der Browser erhält den Public Key und erstellt ein Push-Abonnement.
- Die resultierende
endpoint-URL und Keys werden an Ihren Server gesendet. - Ihr Server signiert die Nachricht mit dem Private Key und sendet sie an den Endpoint.
Sicherheit & DSGVO
VAPID ist ein Gewinn für den Datenschutz. Da der Server sich identifiziert, können Push-Dienste Missbrauch (Spam) blockieren, ohne den Inhalt der (verschlüsselten) Nachricht lesen zu müssen. Wichtig: Speichern Sie den Private Key niemals in öffentlichen Repositories (GitHub etc.).
Multi-Language Code-Beispiele
Wählen Sie Ihre bevorzugte Programmiersprache, um zu sehen, wie Sie die generierten Keys integrieren:
- JavaScript (Frontend)
- PHP
- Node.js
- Python
// Registrierung des Service Workers und Abonnieren mit dem Public Key
const publicKey = 'DEIN_GENERIERTER_PUBLIC_KEY';
async function subscribe() {
const reg = await navigator.serviceWorker.ready;
const sub = await reg.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: urlBase64ToUint8Array(publicKey)
});
// Sende sub-Objekt als JSON an deinen PHP/Python/Node Server
console.log(JSON.stringify(sub));
}
function urlBase64ToUint8Array(base64) {
const padding = '='.repeat((4 - base64.length % 4) % 4);
const b64 = (base64 + padding).replace(/-/g, '+').replace(/_/g, '/');
return Uint8Array.from(atob(b64), c => c.charCodeAt(0));
}// Nutzt die Library 'minishlink/web-push' (via Composer)
use Minishlink\WebPush\WebPush;
use Minishlink\WebPush\Subscription;
$auth = [
'VAPID' => [
'subject' => 'mailto:admin@deinedomain.de',
'publicKey' => 'DEIN_GENERIERTER_PUBLIC_KEY',
'privateKey' => 'DEIN_GENERIERTER_PRIVATE_KEY',
],
];
$webPush = new WebPush($auth);
$report = $webPush->sendOneNotification(
Subscription::create($subscriptionDataFromJS),
'{"title": "Hallo!", "body": "Push-Nachricht via PHP"}'
);// Nutzt 'web-push' Paket
const webpush = require('web-push');
webpush.setVapidDetails(
'mailto:admin@deinedomain.de',
'DEIN_GENERIERTER_PUBLIC_KEY',
'DEIN_GENERIERTER_PRIVATE_KEY'
);
// Payload senden
webpush.sendNotification(userSubscription, 'Nachrichteninhalt')
.catch(err => console.error('Error sending push:', err));// Nutzt die Library 'pywebpush'
from pywebpush import webpush, WebPushException
private_key = "DEIN_GENERIERTER_PRIVATE_KEY"
try:
webpush(
subscription_info=sub_info_json,
data="Hallo aus Python!",
vapid_private_key=private_key,
vapid_claims={"sub": "mailto:admin@deinedomain.de"}
)
except WebPushException as ex:
print("Fehler: {}", repr(ex))Gut zu wissen:
VAPID-Keys laufen technisch nicht ab. Ein Austausch ist nur erforderlich, wenn der Private Key bekannt wurde.
Tipp: Nutzen Sie für unterschiedliche Umgebungen (Staging/Produktion) verschiedene Key-Paare, um Fehlleitungen zu vermeiden.