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

101 lines
3.2 KiB
Markdown

# 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` :
```bash
# 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 :
```bash
# 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