generar-smime.sh 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #!/bin/bash
  2. set -e
  3. CA_DIR="/home/creylopez/SMIME"
  4. CA_CONF="$CA_DIR/ca.cnf"
  5. SMIME_CONF="$CA_DIR/smime.cnf"
  6. if [ $# -lt 3 ]; then
  7. echo "Uso: $0 <nombre-comun> <email> <password> [dias]"
  8. echo "Ej: $0 \"Usuario Ejemplo\" usuario@example.com micontraseña 365"
  9. exit 1
  10. fi
  11. CN="$1"
  12. EMAIL="$2"
  13. PASS="$3"
  14. DAYS="${4:-365}"
  15. DIR="$CA_DIR/usuarios/$EMAIL"
  16. KEY="$DIR/$EMAIL.key.pem"
  17. CSR="$DIR/$EMAIL.csr.pem"
  18. CERT="$DIR/$EMAIL.cert.pem"
  19. PFX="$DIR/$EMAIL.p12"
  20. mkdir -p "$DIR"
  21. echo "[1/4] Generando clave privada..."
  22. openssl genrsa -out "$KEY" 2048
  23. echo "[2/4] Generando CSR..."
  24. openssl req -config "$SMIME_CONF" \
  25. -key "$KEY" -new -sha256 -out "$CSR" \
  26. -subj "/C=ES/ST=Madrid/L=Madrid/O=MiCA/CN=$CN/emailAddress=$EMAIL"
  27. echo "[3/4] Firmando certificado con la CA..."
  28. openssl ca -config "$CA_CONF" \
  29. -in "$CSR" -out "$CERT" \
  30. -extfile "$SMIME_CONF" -extensions smime_ext \
  31. -days "$DAYS" -notext -batch
  32. echo "[4/4] Creando archivo PKCS#12..."
  33. openssl pkcs12 -export \
  34. -in "$CERT" -inkey "$KEY" \
  35. -certfile "$CA_DIR/ca/certs/ca.cert.pem" \
  36. -out "$PFX" -passout "pass:$PASS"
  37. rm -f "$CSR"
  38. echo ""
  39. echo "=== Certificado S/MIME generado exitosamente ==="
  40. echo " Titular: $CN"
  41. echo " Email: $EMAIL"
  42. echo " Validez: $DAYS días"
  43. echo ""
  44. echo " Clave privada: $KEY"
  45. echo " Certificado: $CERT"
  46. echo " PKCS#12: $PFX"
  47. echo " Password PKCS#12: $PASS"
  48. echo ""
  49. echo "Importa $PFX en Thunderbird, Outlook o Apple Mail."
  50. echo "El certificado de CA está en $CA_DIR/ca/certs/ca.cert.pem"
  51. echo "(debe estar instalado como Autoridad de Confianza en cada cliente)"