Confiando en la lista de autoridades de certificación de openssl o proporcione la mía

1

Mis disculpas si esto es demasiado subjetivo, pero estoy buscando consejos sobre las mejores prácticas. Mantenemos un pequeño programa escrito en Python que se ejecuta en los servidores de nuestros clientes y se comunica con nuestros servidores. Estamos utilizando el módulo ssl de Python, que se basa en openssl para proteger esta comunicación a nuestros servidores. Este programa se ejecuta en sistemas Linux más antiguos (piense en RHEL5) así como en variantes de Windows. (Sí, el módulo ssl no viene de forma predeterminada con Python 2.4, pero ignore ese problema por el bien de esta pregunta).

Nuestro plan es incluir un archivo con el programa que contiene la autoridad de certificación que emitió nuestro certificado SSL actual, así como algunas otras autoridades que podremos usar en el futuro. De esa manera, sabemos que no importa lo que haya en los servidores del cliente, nuestra autoridad de certificación será confiable.

¿Es esto razonable, o openssl proporciona una lista suficientemente buena de autoridades de certificación incluso para versiones anteriores de openssl que no deberíamos tener que preocuparnos por esto nosotros mismos? ¿Hay algún problema que también debamos considerar con respecto a proporcionar nuestra propia lista de autoridades de certificación, más allá de simplemente incluirnos en esa lista para futuros certificados SSL?

    
pregunta Steven 27.08.2014 - 23:33
fuente

2 respuestas

3

OpenSSL no viene con una lista de agencias de certificados de confianza, solo tiene una ruta predeterminada donde busca estas CA. En Linux y * BSD, esta ruta generalmente la rellena el sistema operativo, a menudo basada en la lista que usa Mozilla en el navegador Firefox.

Pero, no hay tal lista en Windows, porque OpenSSL no puede manejar la forma en que Windows almacena los certificados. Tampoco existe tal lista en OS X, pero Apple agregó un truco a OpenSSL tal como se envió en Mac OS X para integrarlo de alguna manera en su cadena de llaves nativa.

Esto significa que, si desea tener un comportamiento controlado, es mejor que lo envíe con su propia lista de CA confiables. Y si el programa solo debe conectarse solo a su servidor, puede ser lo mejor incluir solo las CA relevantes para esta tarea.

    
respondido por el Steffen Ullrich 28.08.2014 - 06:22
fuente
1

Por lo general, puede decir que el mantenimiento de la lista de CA del sistema operativo es responsabilidad de los administradores de los servidores cliente. Incluso si no fuera por su aplicación, deberían mantener esa lista, siempre que haya aplicaciones que dependan de ella. Si tiene requisitos especiales para la seguridad de la conexión https, puede ejecutar su propia CA y crear un subdominio especial en su servidor para entregar un certificado firmado por su propia CA.

Cada CA adicional en la lista es un riesgo de seguridad más. Especialmente cuando la lista está mal mantenida, eventos como el problema con el CA indio pasar desapercibido.

Sin embargo, siempre deje una opción para agregar certificados personalizados en el lado del cliente, ya que algunas compañías tienen proxies que interceptan el tráfico https saliente, lo descifran y luego lo vuelven a cifrar. Una CA personalizada puede ser un problema para esos proxies, de modo que cuando cree su CA, asegúrese de que solo cubre su dominio , para que pueda convencer a sus clientes de que agreguen su CA a las CA de confianza del proxie.

    
respondido por el user10008 28.08.2014 - 06:36
fuente

Lea otras preguntas en las etiquetas