Descargando lista de certificados anclados

0

Estoy pensando en implementar fijación de certificados en una aplicación móvil. La aplicación necesitará conectarse a varios sitios seguros. En lugar de tener que actualizar la aplicación cada vez que caduque uno de sus certificados, tendría sentido:

  • cree un certificado autofirmado con una fecha de vencimiento lejana en el futuro
  • publique una lista de certificados válidos para la aplicación, en un servidor que use ese certificado autofirmado
  • pin este certificado autofirmado en la aplicación
  • cuando se inicie la aplicación, descargue esa lista y comience a fijar los certificados adicionales en ella

¿O hay alguna razón para que esto sea una mala idea?

    
pregunta JW. 18.04.2014 - 20:23
fuente

1 respuesta

2

Lo que estás describiendo es realmente tu propia función de actualización automática reducida, limitada a la actualización de lo que equivale a un "almacén de confianza" para certificados.

Lo malo de esto es que funciona fuera del mecanismo normal de actualización de la aplicación, sin la intervención del usuario, por lo que el usuario obtendrá las actualizaciones, ya sea que las quiera o no.

Lo bueno de esto es que funciona fuera del mecanismo normal de actualización de la aplicación, sin necesidad de la intervención del usuario, por lo que el usuario obtendrá las actualizaciones incluso si cree que podría vivir sin ellas.

Google Chrome ha estado haciendo eso durante algún tiempo, e incluso actualiza el software real código, no sólo las tiendas de confianza; y parece funcionar bien con ellos. Como @mikeazo comenta, si su "clave privada de raíz" (la clave privada de su certificado autofirmado) alguna vez es robada, usted está en serios problemas, por lo que tal vez debería usar una estrategia de firma : en su lugar de hacer que su servidor sea un servidor HTTPS (con el certificado autofirmado para SSL), conviértalo en un servidor HTTP simple, pero haga que la "lista de certificados válidos" sea un dato firmado . De esa manera, puede manejar el proceso de firma en una máquina distinta, preferiblemente una computadora fuera de línea (si la clave privada nunca abandona una computadora que nunca está vinculada a ninguna red, entonces es probable que la clave privada no se vea comprometida de forma remota). / p>     

respondido por el Thomas Pornin 18.04.2014 - 22:33
fuente

Lea otras preguntas en las etiquetas