Despliegue de Docker
Guía de despliegue de PKI Trust Manager con Docker: requisitos, configuración, licencia, comprobación, mantenimiento y seguridad.
PKI Trust Manager de nueva generación de Securetron simplifica la gestión de certificados, incluidos TLS, PQC, ADCS / MS CA, AWS CA, Azure Vault y muchos más. Incorpora descubrimiento inteligente de certificados y un servicio avanzado de notificaciones; ofrece gobernanza y automatización mediante SCEP, EST y ACME para ayudar a prevenir interrupciones automatizando las renovaciones.
Más información: https://securetron.net
Guía de despliegue de PKI Trust Manager en Docker
Índice#
- Requisitos previos
- Requisitos del sistema
- Descripción de la arquitectura
- Instrucciones de configuración
- Configuración
- Variables de entorno
- Configuración de Nginx
- Configuración de licencia
- Pasos de despliegue
- Verificación y pruebas
- Solución de problemas
- Mantenimiento
Requisitos previos#
Requisitos de software#
- Docker Engine 20.10.0 o posterior
- Docker Compose 2.0.0 o posterior
- Git para el control de versiones
- Certificados SSL/TLS (para despliegues de producción)
Requisitos de acceso#
- Acceso a Docker Hub/Registry para descargar imágenes
- Herramientas cliente de SQL Server (opcional, para administrar la base de datos)
- Acceso administrativo al servidor de despliegue
Requisitos de red#
- Puertos abiertos: 1433 (SQL), 5053 (interfaz web), 443 (HTTPS)
- Acceso SMTP saliente (puerto 2525 o el puerto de su servidor SMTP)
- Resolución DNS para los nombres de host de los servicios
Requisitos del sistema#
Hardware mínimo#
- CPU: 4 núcleos (arquitectura x64)
- RAM: 8 GB como mínimo; 16 GB recomendados
- Almacenamiento: 50 GB de espacio libre (se recomienda SSD)
- Red: interfaz de red de 1 Gbps
Especificaciones recomendadas para producción#
- CPU: 8 o más núcleos
- RAM: 32 GB
- Almacenamiento: 200 GB o más con configuración RAID
- Copias de seguridad: estrategia periódica para los volúmenes
Descripción de la arquitectura#
┌─────────────────────────────────────────────────────────────┐
│ PKI Trust Manager Stack │
├─────────────────┬─────────────────┬─────────────────────────┤
│ Nginx Proxy │ Web UI (CMS) │ SQL Server │
│ (SSL/TLS) │ Port: 5228 │ Port: 1433 │
│ Port: 443 │ │ │
└─────────────────┴─────────────────┴─────────────────────────┘
│ │ │
└────────────────┼──────────────────┘
│
Application Bridge Network
Instrucciones de configuración#
1. Clonar/preparar el directorio de despliegue#
mkdir -p /opt/pki-trust-manager
cd /opt/pki-trust-manager2. Crear la estructura de directorios#
mkdir -p {certs,license,config}3. Crear el archivo Docker Compose#
Cree docker-compose.yaml con la configuración proporcionada:
cat > docker-compose.yaml << 'EOF'
[PASTE PROVIDED DOCKER-COMPOSE.YAML CONTENT HERE]
EOF4. Crear el archivo de entorno#
Cree el archivo .env para las variables de entorno:
Advertencia de seguridad: los valores de contraseña y clave de este ejemplo son marcadores de posición. Sustitúyalos por valores únicos y seguros antes de producción; no reutilice ni publique credenciales reales.
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
EOFConfiguración#
Configuración de certificados SSL/TLS#
- Coloque los certificados SSL en el directorio
certs/:
# Certificate files
certs/
├── cert.crt # SSL Certificate
└── key.pem # Private Key- Para pruebas, genere certificados autofirmados:
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"Configuración de Nginx#
Cree 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 de entorno#
Variables de seguridad críticas#
| Variable | Descripción | Valor predeterminado | Obligatoria |
|---|---|---|---|
SQL_SA_PASSWORD | Contraseña SA de SQL Server | PKI_Strong@Pass123 | Sí |
ADMIN_PASSWORD | Contraseña del superadministrador | happy | Sí |
SMTP_PASSWORD | Contraseña de autenticación SMTP | - | Sí |
LICENSE_API_KEY | Clave API del servidor de licencias | - | Sí |
LICENSE_PUBLIC_KEY | Clave pública para validar licencias | - | Sí |
Configuración de la base de datos#
- Asegúrese de que
SQL_SA_PASSWORDcumpla los requisitos de complejidad. - Cambie las contraseñas predeterminadas antes del despliegue de producción.
- Considere utilizar Docker secrets en producción.
- Para MSSQL en producción, utilice BYOL o su propio servidor MSSQL.
Configuración del correo electrónico#
- Configure credenciales SMTP válidas.
- Establezca una dirección de remitente adecuada.
- Pruebe el correo después del despliegue.
Configuración de licencia#
- Obtenga los archivos de licencia de Securetron (https://securetron.net/contact/).
- Coloque los archivos de licencia en el directorio
license/:
license/
├── product.lic
└── validation.key- Configure los parámetros de licencia en
.env:- Establezca
LICENSE_OFFLINE_MODE=trueen entornos aislados (air-gapped). - Establezca
LICENSE_ONLINE_VALIDATION=truepara despliegues en la nube. - Póngase en contacto con Securetron para obtener
LICENSE_API_KEYyLICENSE_PUBLIC_KEY.
- Establezca
Pasos de despliegue#
1. Despliegue inicial#
# 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. Verificar el despliegue#
# 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. Configuración inicial#
- Acceda a la interfaz web:
https://your-server-domain. - Inicie sesión con las credenciales de superadministrador del archivo
.env. - Complete la configuración inicial:
- Configure los ajustes de la organización.
- Configure las autoridades de certificación.
- Configure las plantillas de notificación.
- Añada cuentas de usuario.
Verificación y pruebas#
Comprobaciones de estado#
# 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.comPruebas funcionales#
- Autenticación de usuarios: inicie sesión con las credenciales de administrador.
- Operaciones con certificados: emita un certificado de prueba.
- Notificaciones por correo: active una notificación de prueba.
- Protocolo SCEP: pruebe la inscripción SCEP (si está configurada).
- Copia de seguridad/restauración: pruebe la función de respaldo de la base de datos.
Solución de problemas#
Problemas comunes#
1. Problemas de conexión a SQL Server
# Check SQL Server logs
docker-compose logs sqlserver
# Verify network connectivity between containers
docker-compose exec cmsweb ping sqlserver.local2. La aplicación web no se inicia
# Check application logs
docker-compose logs cmsweb
# Verify environment variables
docker-compose exec cmsweb env | grep ConnectionStrings3. Problemas de SSL/TLS
# Verify certificate permissions
ls -la certs/
# Test Nginx configuration
docker-compose exec nginx nginx -t4. Fallos en la validación de licencia
- Verifique los archivos de licencia del directorio
license/. - Compruebe la conectividad de red con el servidor de licencias.
- Valide las fechas de expiración de la licencia.
Ubicación de registros#
- Registros de la aplicación: registros del contenedor (
docker-compose logs cmsweb) - Registros de la base de datos: registros del contenedor (
docker-compose logs sqlserver) - Registros de Nginx: registros del contenedor (
docker-compose logs nginx) - Registros de Docker:
journalctl -u docker.service
Mantenimiento#
Procedimientos de copia de seguridad#
# 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/Procedimientos de actualización#
# Pull latest images
docker-compose pull
# Restart services
docker-compose up -d
# Cleanup old images
docker image prune -fSupervisión#
- Supervisión de recursos: CPU, memoria y uso del disco.
- Expiración de certificados: supervise los periodos de validez.
- Registros de la aplicación: revise periódicamente si hay errores.
- Tamaño de la base de datos: supervise su crecimiento.
Refuerzo de seguridad#
- Actualizaciones periódicas: mantenga Docker e imágenes actualizados.
- Rotación de contraseñas: cambie las contraseñas periódicamente.
- Control de acceso: restrinja el acceso al directorio de despliegue.
- Seguridad de red: configure adecuadamente las reglas del firewall.
- Registros de auditoría: habilite y supervise los registros de auditoría.
- MFA de usuarios: utilice TOTP MFA integrado o Enterprise SSO (SAML / OpenID).
Soporte#
Para obtener soporte técnico:
- Documentación: https://securetron.net/documentation
- Portal de soporte: https://securetron.net
- Contacto de emergencia: [email protected]
Nota: Esta guía de despliegue corresponde a PKI Trust Manager 2.x. Consulte siempre la documentación oficial para obtener instrucciones específicas de cada versión.