Emisión y administración de grandes cantidades de certificados para la autenticación del cliente

4

Estoy desarrollando un producto de Internet de las cosas y planeo usar la autenticación de certificado de cliente, emitiendo cada "cosa" su propio certificado en la línea de producción para que pueda autenticarse con un servidor central. Si bien esto funciona bien para nuestras pequeñas pruebas en las que emito e instalo los certificados manualmente, tengo algunas preguntas antes de prepararme para ampliar la producción:

1) ¿Hay algún beneficio al usar una CA "real" para emitir mi certificado de servidor y generar mis certificados de cliente para mí? Los pocos que he encontrado que hacen esto son costosos, y aunque no soy un experto en seguridad, si instalo los certificados de los clientes en los dispositivos, tener una tercera parte no parece proporcionar ningún beneficio adicional. / p>

2) ¿Existe algún software estándar en el extremo del servidor que pueda manejar la autenticación de decenas de miles de dispositivos usando una cantidad igualmente grande de certificados? ¿Puedo simplemente pegar cada certificado de cliente en / etc / ssl / certificate y esperar que nginx, haproxy o algo similar pueda manejar eso? (desplegamos entre 30-50k "cosas" por año)

    
pregunta AnodeCathode 08.12.2015 - 19:46
fuente

1 respuesta

3

Si desea mantener bajo su presupuesto, le recomendaría que consulte EJBCA , que es de código abierto y de uso gratuito, aunque gran parte de la funcionalidad empresarial de lujo está en su versión de pago. Hacen las siguientes afirmaciones sobre el rendimiento:

  

Dado que EJBCA usa bases de datos relacionales estándar, adecuadas para gran escala y alto rendimiento, puede escalar fácilmente EJBCA a cientos de millones de certificados emitidos, y con cierta atención incluso miles de millones. Dependiendo de la arquitectura y las interfaces elegidas, puede alcanzar una latencia muy baja (sub 100 ms) y un rendimiento muy alto (> 100 certs / seg). [fuente]

Aunque las pruebas independientes han encontrado que esto disminuye bastante rápidamente cuando obtiene más de 1 millón de certificados emitidos.

Abordar la segunda parte de su pregunta:

  

¿Hay algún beneficio al usar una CA "real" para emitir mi certificado de servidor y generar mis certificados de cliente para mí?

Realmente depende de para qué estás usando los certificados. Sé que muchos procesos de fabricación de Internet de las cosas (IoT) utilizan certificados de clientes para permitir que los dispositivos se autentiquen en la red corporativa durante la fabricación para realizar la configuración por primera vez, la descarga de firmware y otras cosas que desea hacer de forma segura. . Al final de la fabricación, esos certificados se destruyen / no se vuelven a utilizar. En el caso de que sea perfectamente correcto utilizar una CA interna privada que esté oculta de Internet.

Si, por otro lado, los certificados que emite durante la fabricación permanecerán en producción en el dispositivo y deberán ser verificables públicamente, entonces esa es una historia diferente. [Por ejemplo, si hace bombillas y necesita que los iPhones de los usuarios puedan verificar que están hablando con una bombilla de IPBulb, Inc auténtica, o las bombillas deben poder autenticarse en un servidor de IPBulb, Inc. para recuperar periódicamente las actualizaciones.] En este caso, deberá tener una CA pública que haga todo el control de estado de las actualizaciones de claves y revocación. Esto se complica rápidamente y puede que valga la pena asociarse con una CA comercial para evitar la molestia.

EDIT : tirando de los comentarios a continuación para hacer que la respuesta sea autónoma.

Mi razón para abogar por la externalización de la emisión de su certificado se debe principalmente a la carga del servidor y los tiempos de respuesta cuando tiene que lidiar con la revocación y las actualizaciones de certificados. Para la mayoría de las pequeñas y medianas empresas, es más barato subcontratar esto a un especialista que contratar ingenieros de centros de datos de primera categoría.

Revocación: La parte difícil es que el servidor que verifica los certificados debe poder preguntar a la CA "¿sigue siendo válido este certificado?" y obtener una respuesta muy rápidamente (como < 25 ms). Esto se denomina Protocolo de estado de certificado en línea (OCSP). A medida que su infraestructura crezca, un solo servidor de OCSP no podrá manejar el tráfico, por lo que ahora necesita la replicación de la base de datos en vivo, y ballancers de carga, y buenos ingenieros de centros de datos para mantener bajos los tiempos de respuesta. Esto está más allá del alcance de la mayoría de las pequeñas y medianas empresas, y es más barato subcontratar.

Para la actualización / reedición de certificados: no hay ningún problema con que el cliente descargue su certificado nuevo / reemitido antes de que caduque el anterior, pero debe tener servidores que lo estén administrando activamente. que tienen puertos de administración de certificados abiertos al Internet público (superficie de ataque potencial / punto de piratería). Además, para ~ 30k certificados que caducan en un corto período de tiempo, la carga del servidor será enorme. Una vez más, ¿qué tan buenos son los ingenieros del centro de datos de su empresa?

    
respondido por el Mike Ounsworth 08.12.2015 - 20:08
fuente

Lea otras preguntas en las etiquetas