Saltar al contenido

Certificados e intermediarios

La red de una empresa inspecciona el tráfico, y tu aplicación tiene que funcionar ahí. Qué es la fijación de certificados, cuándo conviene y por qué a veces es lo peor que puedes hacer.

Los dos escenarios

Y ahí está el problema: son indistinguibles desde tu código, salvo por un detalle — en el caso corporativo, la entidad está en el almacén de confianza del sistema porque alguien con permisos la puso.

Qué hace la fijación

Fijar significa aceptar solo el certificado o la clave de tu servidor, ignorando el almacén de confianza del sistema.

La postura razonable

Y si fijas, fija la clave pública y no el certificado: la clave puede sobrevivir a la renovación del certificado, con lo que rotar deja de ser un incidente. Es la diferencia entre fijación viable y fijación peligrosa.

El error de certificado

Y la regla que no admite excepciones: nunca ofrezcas al usuario aceptar un certificado inválido.

Es una opción que aparece en muchas librerías y que la gente activa «temporalmente» durante el desarrollo. Tres razones:

  • El usuario no puede evaluar esa decisión. Nadie puede, mirando un diálogo.
  • Se queda activada. Lo temporal en desarrollo llega a producción con una frecuencia notable.
  • Y anula todo lo demás. Una aplicación que acepta cualquier certificado no tiene canal seguro, por mucho que use cifrado.

En desarrollo, si hace falta un certificado propio, añádelo al almacén de confianza de tu máquina en vez de desactivar la validación en el código. Cuesta cinco minutos y no puede llegar a producción.