Configuración para tener certificados smime con una autoridad de confianza local
Find a file
2026-05-25 10:52:18 +00:00
ca Añado motagarrido 2026-05-25 10:52:18 +00:00
usuarios Añado motagarrido 2026-05-25 10:52:18 +00:00
ca.cnf Genera certificados y añade instrucciones 2026-05-25 06:11:39 +00:00
generar-smime.sh Genera certificados y añade instrucciones 2026-05-25 06:11:39 +00:00
README.md Cambio encabezados en generación de contraseñas 2026-05-25 10:46:18 +00:00
smime.cnf Genera certificados y añade instrucciones 2026-05-25 06:11:39 +00:00

Autoridad Certificadora S/MIME

AC propia para generar certificados S/MIME para firmar y cifrar correos electrónicos.

Estructura

.
├── ca.cnf               # Configuración de la AC
├── smime.cnf            # Configuración para certificados S/MIME
├── generar-smime.sh     # Script para generar certificados
├── ca/
│   ├── private/
│   │   └── ca.key.pem   # Clave privada de la AC (no compartir)
│   └── certs/
│       └── ca.cert.pem  # Certificado raíz (instalar en cada cliente)
└── usuarios/
    └── <email>/
        ├── <email>.key.pem   # Clave privada del usuario
        ├── <email>.cert.pem  # Certificado S/MIME del usuario
        └── <email>.p12       # Contenedor PKCS#12 (importar en cliente)

Generar un certificado S/MIME

./generar-smime.sh "Nombre Apellido" email@dominio.com contraseña [días]
  • Se genera una clave RSA de 2048 bits.
  • El certificado incluye emailProtection en Extended Key Usage y el email en Subject Alternative Name.
  • Validez por defecto: 365 días.
  • El CSR se elimina automáticamente tras firmar.

Ejemplo

./generar-smime.sh "Juan Pérez" juan@example.com MiClaveSegura 730

Produce usuarios/juan@example.com/juan@example.com.p12.

Generación de contraseñas.

1. GPG

gpg --gen-random --armor 1 32

2. openssl

openssl rand -base64 32

3. apg

apg

4. date

date +%s | sha256sum | base64 | head -c 32 ; echo

5. urandom

< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;

6. tr

tr -cd '[:alnum:]' < /dev/urandom | fold -w30 | head -n1

7. strings

strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n'; echo

Cualquiera de los métodos anteriores genera una contraseña segura. La idea es generar primero la contraseña y luego invocar a la shell script para generar el certificado.


Instalación en macOS

1. Instalar el certificado raíz de la AC como Autoridad de Confianza

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ca/certs/ca.cert.pem

O desde la interfaz gráfica:

  1. Abrir Keychain Access (Llavero).
  2. Arrastrar ca/certs/ca.cert.pem a la lista de System (Sistema).
  3. Hacer doble clic en el certificado importado.
  4. Desplegar Trust (Confianza) y elegir Always Trust (Confiar siempre).
  5. Cerrar e ingresar contraseña de administrador.

2. Importar el certificado S/MIME en Mail.app o Keychain

open usuarios/<email>/<email>.p12

Esto abre Keychain Access. Ingresar la contraseña del PKCS#12. El certificado quedará disponible en login (inicio de sesión) para usar con Mail.app.

3. Configurar Mail.app

  1. Abrir Mail > Preferences > Accounts.
  2. Seleccionar la cuenta de correo.
  3. Ir a Account > Signing y elegir el certificado.
  4. En Encryption elegir el mismo certificado.

Al redactar un correo aparecerán los iconos de firma y cifrado.


Instalación en iOS (iPhone / iPad)

1. Instalar el certificado raíz de la AC

Opción A — Servidor web:

cp ca/certs/ca.cert.pem ~/Sites/  # o cualquier carpeta servida por HTTP

Luego abrir http://<ip>/ca.cert.pem en Safari en el dispositivo iOS. Safari ofrecerá Download Profile. Aceptar.

Opción B — AirDrop:

Enviar ca/certs/ca.cert.pem por AirDrop desde un Mac al dispositivo. Al recibirlo aparecerá la opción de instalar el perfil.

Activar confianza:

  1. Ir a Settings > General > About > Certificate Trust Settings.
  2. Activar el interruptor junto al certificado de la AC.

2. Instalar el certificado S/MIME personal

Opción A — PKCS#12 por AirDrop:

Enviar <email>.p12 por AirDrop al dispositivo. Al recibirlo aparecerá Install Profile → ingresar la contraseña del PKCS#12 → Install.

Opción B — PKCS#12 por correo:

Enviarse el .p12 como adjunto a sí mismo, abrirlo en el dispositivo e instalar el perfil.

3. Configurar Mail.app en iOS

  1. Ir a Settings > Mail > Accounts.
  2. Seleccionar la cuenta.
  3. Tocar Account > Advanced.
  4. En S/MIME activar Sign y/o Encrypt y seleccionar el certificado.

Notas

  • El certificado raíz debe instalarse como Autoridad de Confianza en cada dispositivo. Sin esto, los certificados firmados se marcarán como no confiables.
  • La clave privada de la AC (ca/private/ca.key.pem) es sensible. Considérenla como una contraseña maestra.
  • Para revocar un certificado, abrir ca/index.txt y cambiar el primer carácter de la línea correspondiente de V a R.