Déploiement Docker
Guide de déploiement de PKI Trust Manager avec Docker : prérequis, configuration, licence, vérification, maintenance et sécurité.
La nouvelle génération de PKI Trust Manager de Securetron simplifie la gestion des certificats, notamment TLS, PQC, ADCS / MS CA, AWS CA, Azure Vault et bien d’autres. La découverte intelligente des certificats et le service de notification avancée intégrés fournissent gouvernance et automatisation avec SCEP, EST et ACME, et contribuent à prévenir les interruptions en automatisant les renouvellements.
Pour plus d’informations : https://securetron.net
Guide de déploiement de PKI Trust Manager sur Docker
Sommaire#
- Prérequis
- Configuration système requise
- Vue d’ensemble de l’architecture
- Instructions d’installation
- Configuration
- Variables d’environnement
- Configuration Nginx
- Configuration de licence
- Étapes de déploiement
- Vérification et tests
- Dépannage
- Maintenance
Prérequis#
Logiciels requis#
- Docker Engine 20.10.0 ou version ultérieure
- Docker Compose 2.0.0 ou version ultérieure
- Git pour le contrôle de version
- Certificats SSL/TLS (pour un déploiement en production)
Accès requis#
- Accès à Docker Hub/Registry pour récupérer les images
- Outils client SQL Server (facultatifs, pour l’administration de la base de données)
- Accès administrateur au serveur de déploiement
Exigences réseau#
- Ports ouverts : 1433 (SQL), 5053 (interface Web), 443 (HTTPS)
- Accès SMTP sortant (port 2525 ou port SMTP utilisé)
- Résolution DNS des noms d’hôte de service
Configuration système requise#
Configuration matérielle minimale#
- CPU : 4 cœurs (architecture x64)
- RAM : 8 Go minimum, 16 Go recommandés
- Stockage : 50 Go d’espace libre (SSD recommandé)
- Réseau : interface réseau 1 Gbps
Configuration recommandée pour la production#
- CPU : 8 cœurs ou plus
- RAM : 32 Go
- Stockage : 200 Go ou plus avec configuration RAID
- Sauvegardes : stratégie de sauvegarde régulière des volumes
Vue d’ensemble de l’architecture#
┌─────────────────────────────────────────────────────────────┐
│ PKI Trust Manager Stack │
├─────────────────┬─────────────────┬─────────────────────────┤
│ Nginx Proxy │ Web UI (CMS) │ SQL Server │
│ (SSL/TLS) │ Port: 5228 │ Port: 1433 │
│ Port: 443 │ │ │
└─────────────────┴─────────────────┴─────────────────────────┘
│ │ │
└────────────────┼──────────────────┘
│
Application Bridge Network
Instructions d’installation#
1. Cloner/préparer le répertoire de déploiement#
mkdir -p /opt/pki-trust-manager
cd /opt/pki-trust-manager2. Créer l’arborescence des répertoires#
mkdir -p {certs,license,config}3. Créer le fichier Docker Compose#
Créez docker-compose.yaml avec la configuration fournie :
cat > docker-compose.yaml << 'EOF'
[PASTE PROVIDED DOCKER-COMPOSE.YAML CONTENT HERE]
EOF4. Créer le fichier d’environnement#
Créez le fichier .env pour les variables d’environnement :
Avertissement de sécurité : les mots de passe et clés de cet exemple sont des valeurs fictives. Remplacez-les par des valeurs uniques et robustes avant la mise en production ; ne réutilisez ni ne publiez de véritables identifiants.
cat >.env << 'EOF'
# Database Configuration
SQL_SA_PASSWORD=YourStrong@Password123
SQL_DATABASE=PKIDBEE
SQL_PORT=1433
# Web Application
PKIMAIN_TAG=latest
CMSWEB_PORT=5053
ENV_MODE=Cloud
TRUST_LEVEL=Public
# Admin Configuration
ADMIN_USERNAME=superadmin
ADMIN_PASSWORD=YourAdminPass123!
[email protected]
# Authentication
LOGIN_VALIDITY=15
OTP_NAME=PKI-Trust-Manager
EMAIL_VERIFICATION=true
# Email/SMTP Configuration
SMTP_SERVER=mail.smtp2go.com
SMTP_PORT=2525
SMTP_AUTH=true
SMTP_SSL=true
SMTP_USERNAME=your_smtp_username
SMTP_PASSWORD=your_smtp_password
SMTP_SENDER_NAME="PKI Trust Manager"
[email protected]
# Certificate Expiry Settings
EXPIRY_START_RANGE=30
EXPIRY_END_RANGE=3
EXPIRY_NOTIFY_INTERVAL=1
EXPIRY_SCAN_INTERVAL=30
# SCEP Configuration
SCEP_OTP_VALIDITY=525600
# Licensing (Contact Securetron for these values)
LICENSE_SERVER_URL=http://localhost:7001
LICENSE_API_KEY=your_license_api_key
CMSWEB_CLIENT_ID=webcore-001
LICENSE_OFFLINE_MODE=true
LICENSE_ONLINE_VALIDATION=false
LICENSE_PUBLIC_KEY=your_public_key_here
# Logging
LOG_LEVEL=Information
LOG_LEVEL_MS=Warning
# Nginx
NGINX_HTTPS_PORT=443
EOFConfiguration#
Configuration des certificats SSL/TLS#
- Placez vos certificats SSL dans le répertoire
certs/:
# Certificate files
certs/
├── cert.crt # SSL Certificate
└── key.pem # Private Key- Pour les tests, générez des certificats autosignés :
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout certs/key.pem \
-out certs/cert.crt \
-subj "/C=US/ST=State/L=City/O=Organization/CN=pki.yourdomain.com"Configuration Nginx#
Créez nginx.conf :
events {
worker_connections 1024;
}
http {
upstream pki_web {
server cmsweb.local:5228;
}
server {
listen 443 ssl http2;
server_name pki.yourdomain.com;
ssl_certificate /etc/nginx/cert.crt;
ssl_certificate_key /etc/nginx/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
# Security headers
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
location / {
proxy_pass http://pki_web;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
# Health check endpoint
location /health {
proxy_pass http://pki_web/health;
access_log off;
}
}
}Variables d’environnement#
Variables de sécurité critiques#
| Variable | Description | Valeur par défaut | Obligatoire |
|---|---|---|---|
SQL_SA_PASSWORD | Mot de passe SA SQL Server | PKI_Strong@Pass123 | Oui |
ADMIN_PASSWORD | Mot de passe du superadministrateur | happy | Oui |
SMTP_PASSWORD | Mot de passe d’authentification SMTP | - | Oui |
LICENSE_API_KEY | Clé API du serveur de licences | - | Oui |
LICENSE_PUBLIC_KEY | Clé publique de validation des licences | - | Oui |
Configuration de la base de données#
- Vérifiez que
SQL_SA_PASSWORDrespecte les exigences de complexité. - Modifiez les mots de passe par défaut avant le déploiement en production.
- Envisagez l’utilisation de Docker secrets en production.
- Pour MSSQL en production, utilisez BYOL ou votre propre serveur MSSQL.
Configuration du courrier électronique#
- Configurez des identifiants SMTP valides.
- Définissez une adresse d’expéditeur appropriée.
- Testez l’envoi des courriels après le déploiement.
Configuration de licence#
- Obtenez les fichiers de licence auprès de Securetron (https://securetron.net/contact/).
- Placez les fichiers de licence dans le répertoire
license/:
license/
├── product.lic
└── validation.key- Configurez les paramètres de licence dans
.env:- Définissez
LICENSE_OFFLINE_MODE=truepour les environnements isolés (air-gapped). - Définissez
LICENSE_ONLINE_VALIDATION=truepour les déploiements cloud. - Contactez Securetron pour obtenir
LICENSE_API_KEYetLICENSE_PUBLIC_KEY.
- Définissez
Étapes de déploiement#
1. Déploiement initial#
# Set proper permissions
chmod 600 certs/key.pem
chmod 644 certs/cert.crt
# Pull images
docker-compose pull
# Start services
docker-compose up -d
# View logs
docker-compose logs -f2. Vérifier le déploiement#
# Check container status
docker-compose ps
# Check SQL Server health
docker exec sqlserver /opt/mssql-tools18/bin/sqlcmd \
-S localhost -U sa \
-P "${SQL_SA_PASSWORD}" \
-Q "SELECT name FROM sys.databases"
# Check web application
curl -k https://localhost/health3. Configuration initiale#
- Accédez à l’interface Web :
https://your-server-domain. - Connectez-vous avec les identifiants du superadministrateur définis dans
.env. - Terminez la configuration initiale :
- Configurez les paramètres de l’organisation.
- Configurez les autorités de certification.
- Configurez les modèles de notification.
- Ajoutez les comptes utilisateurs.
Vérification et tests#
Contrôles d’état#
# Database health
docker-compose exec sqlserver /opt/mssql-tools18/bin/sqlcmd \
-S localhost -U sa -P "${SQL_SA_PASSWORD}" \
-Q "SELECT 1"
# Application health
curl -f https://localhost/health
# SSL verification
openssl s_client -connect localhost:443 -servername pki.yourdomain.comTests fonctionnels#
- Authentification utilisateur : connectez-vous avec les identifiants d’administration.
- Opérations sur les certificats : émettez un certificat de test.
- Notifications par e-mail : déclenchez une notification de test.
- Protocole SCEP : testez l’enrôlement SCEP (s’il est configuré).
- Sauvegarde/restauration : testez la sauvegarde de la base de données.
Dépannage#
Problèmes courants#
1. Problèmes de connexion à SQL Server
# Check SQL Server logs
docker-compose logs sqlserver
# Verify network connectivity between containers
docker-compose exec cmsweb ping sqlserver.local2. L’application Web ne démarre pas
# Check application logs
docker-compose logs cmsweb
# Verify environment variables
docker-compose exec cmsweb env | grep ConnectionStrings3. Problèmes SSL/TLS
# Verify certificate permissions
ls -la certs/
# Test Nginx configuration
docker-compose exec nginx nginx -t4. Échec de validation de licence
- Vérifiez la présence des fichiers de licence dans
license/. - Vérifiez la connectivité réseau au serveur de licences.
- Vérifiez les dates d’expiration de la licence.
Emplacement des journaux#
- Journaux de l’application : journaux du conteneur (
docker-compose logs cmsweb) - Journaux de la base de données : journaux du conteneur (
docker-compose logs sqlserver) - Journaux Nginx : journaux du conteneur (
docker-compose logs nginx) - Journaux Docker :
journalctl -u docker.service
Maintenance#
Procédures de sauvegarde#
# Database backup
docker-compose exec sqlserver /opt/mssql-tools18/bin/sqlcmd \
-S localhost -U sa -P "${SQL_SA_PASSWORD}" \
-Q "BACKUP DATABASE [${SQL_DATABASE}] TO DISK='/var/opt/mssql/backup/$(date +%Y%m%d).bak'"
# Configuration backup
tar czf pki-backup-$(date +%Y%m%d).tar.gz \
docker-compose.yaml .env nginx.conf certs/ license/Procédures de mise à jour#
# Pull latest images
docker-compose pull
# Restart services
docker-compose up -d
# Cleanup old images
docker image prune -fSurveillance#
- Surveillance des ressources : CPU, mémoire et espace disque.
- Expiration des certificats : surveillez les périodes de validité.
- Journaux de l’application : recherchez régulièrement les erreurs.
- Taille de la base de données : surveillez sa croissance.
Renforcement de la sécurité#
- Mises à jour régulières : maintenez Docker et les images à jour.
- Rotation des mots de passe : renouvelez les mots de passe régulièrement.
- Contrôle d’accès : limitez l’accès au répertoire de déploiement.
- Sécurité réseau : configurez correctement les règles du pare-feu.
- Journaux d’audit : activez et surveillez les traces d’audit.
- MFA utilisateur : utilisez le MFA TOTP intégré ou Enterprise SSO (SAML / OpenID).
Assistance#
Pour obtenir une assistance technique :
- Documentation : https://securetron.net/documentation
- Portail d’assistance : https://securetron.net
- Contact d’urgence : [email protected]
Remarque : ce guide concerne PKI Trust Manager version 2.x. Consultez toujours la documentation officielle pour les instructions propres à chaque version.