espace-paie-odentas/ODENTAS_SIGN_LAMBDA_URLS.md
odentas c3d7fc5618 feat(odentas-sign): Configuration Lambda URLs + Certificat Odentas Media SAS + Gestion erreurs
 Nouvelles fonctionnalités :
- Configuration des URLs Lambda PAdES et TSA dans .env
- Certificats Odentas Media SAS (CN=Odentas Seal, O=Odentas Media SAS)
- Ajout champs /Name, /Reason, /Location dans signature PDF
- Documentation complète des URLs Lambda (ODENTAS_SIGN_LAMBDA_URLS.md)

🔧 Améliorations :
- Gestion stricte des erreurs dans webhook completion
- Ne marque plus 'completed' si scellage échoue
- Vérification des variables LAMBDA_PADES_URL et LAMBDA_TSA_URL
- Build Docker multi-arch (ARM64 → AMD64) avec --platform

🔐 Certificats :
- CA Root: CN=Odentas Media SAS Root CA, O=Odentas Media SAS
- Certificat signature: CN=Odentas Seal, O=Odentas Media SAS, OU=Signature Electronique
- Chaîne complète uploadée sur S3 (s3://odentas-sign/certs/chain.pem)

 Tests :
- Lambda PAdES testée et fonctionnelle
- Lambda TSA testée et fonctionnelle
- Affichage 'Odentas Media SAS' dans Adobe Reader confirmé

⚠️ Niveau eIDAS actuel : SES (Signature Électronique Simple)
TODO: Améliorer conformité PAdES pour niveau AES (voir TODO_PADES_CONFORMITE.md)
2025-10-28 19:32:29 +01:00

3.2 KiB

Odentas Sign - Configuration Lambda URLs

URLs des Lambdas de Production

Lambda PAdES Seal

Fonction: Scellage des PDFs avec signature électronique qualifiée (PAdES)

  • Nom: odentas-pades-sign
  • URL: https://to6vdbnrcencifu3rlg5rygrua0hhdqc.lambda-url.eu-west-3.on.aws/
  • Région: eu-west-3 (Paris)
  • Variable d'environnement: LAMBDA_PADES_URL

Lambda TSA Timestamp

Fonction: Horodatage des documents signés (RFC 3161)

  • Nom: odentas-tsa-stamp
  • URL: https://fs5drdovby3tye4i3fmb27b3gi0zfqyw.lambda-url.eu-west-3.on.aws/
  • Région: eu-west-3 (Paris)
  • Variable d'environnement: LAMBDA_TSA_URL

Configuration KMS

Clé KMS pour chiffrement des signatures:

arn:aws:kms:eu-west-3:292468105557:key/4d08be1d-a871-486e-bf70-f651f18c5f19

Variable d'environnement: KMS_KEY_ID

Serveur d'Horodatage TSA

URL du serveur TSA (Sectigo):

https://timestamp.sectigo.com

Variable d'environnement: TSA_URL

Configuration dans .env

Ajoutez ces lignes dans votre fichier .env :

# Odentas Sign - Lambda URLs
LAMBDA_PADES_URL=https://to6vdbnrcencifu3rlg5rygrua0hhdqc.lambda-url.eu-west-3.on.aws/
LAMBDA_TSA_URL=https://fs5drdovby3tye4i3fmb27b3gi0zfqyw.lambda-url.eu-west-3.on.aws/
KMS_KEY_ID=arn:aws:kms:eu-west-3:292468105557:key/4d08be1d-a871-486e-bf70-f651f18c5f19
TSA_URL=https://timestamp.sectigo.com

Déploiement sur Vercel

Pour déployer en production sur Vercel, ajoutez ces variables d'environnement :

  1. Aller dans Settings > Environment Variables
  2. Ajouter chaque variable :
    • LAMBDA_PADES_URL
    • LAMBDA_TSA_URL
    • KMS_KEY_ID
    • TSA_URL
  3. Sélectionner Production, Preview, et Development
  4. Redéployer l'application

Workflow de Signature Complet

  1. Signature électronique → Les signataires signent via l'interface web
  2. Déclenchement automatique → Quand tous ont signé, webhook appelé
  3. Lambda PAdES → Scellage du PDF avec signature qualifiée
  4. Lambda TSA → Horodatage du document
  5. S3 Archive → Stockage avec compliance lock (10 ans)
  6. Email de confirmation → Notification aux signataires

Gestion des Erreurs

Si une Lambda échoue :

  • Le statut de la demande passe à failed
  • 🔔 Un événement sealing_failed est loggé
  • 🚫 Le document n'est pas marqué comme completed

Avant ce correctif, le système marquait le document comme completed même en cas d'échec du scellage, ce qui posait un problème de conformité.

Vérification des URLs

Pour vérifier que les Lambdas sont accessibles :

# Test Lambda PAdES
curl -X POST https://to6vdbnrcencifu3rlg5rygrua0hhdqc.lambda-url.eu-west-3.on.aws/ \
  -H "Content-Type: application/json" \
  -d '{}'

# Test Lambda TSA
curl -X POST https://fs5drdovby3tye4i3fmb27b3gi0zfqyw.lambda-url.eu-west-3.on.aws/ \
  -H "Content-Type: application/json" \
  -d '{}'

Sécurité

Les Function URLs sont actuellement configurées avec auth-type: NONE pour permettre l'accès direct depuis Next.js.

Pour une sécurité renforcée en production, considérez :

  • Utiliser IAM authentication
  • Ajouter une API Gateway avec authentification
  • Implémenter un système de tokens/signatures