Almacenamiento de claves privadas SSL en el servidor de producción
Según entiendo su pregunta, tiene un servidor web que sirve una GUI a través de HTTPS (IIS, Apache, Tomcat, algo) y desea saber cómo almacenar de forma segura las claves privadas en el disco para este servidor.
Normalmente, las personas ponen mucho esfuerzo en proteger sus claves privadas de CA, pero mucho menos en proteger las claves privadas del servidor web (porque el servidor web necesita acceso a ellas en todo momento).
Metáfora: esto es similar a preguntar "¿El mejor tipo de garaje para mi auto deportivo?". La respuesta corta es: realmente no importa si su automóvil pasará el 99% de su tiempo en la carretera.
Creo que esta pregunta cubre lo que estás preguntando:
¿Cómo debo almacenar las claves SSL en el servidor? ?
Básicamente, si está bien con la necesidad de iniciar manualmente el servidor web cada vez, se aplica la lista que tengo a continuación para las claves de CA, pero si desea que el servidor se reinicie automáticamente, sus opciones son
-
Almacene la clave en el servidor en texto plano (aplicando los permisos de archivo que pueda).
-
Si está en Windows, use CAPI / DPAPI para agregar protecciones adicionales al archivo más allá de lo que puede hacer sin la ayuda del sistema operativo.
-
Compre un HSM para almacenar las claves para sus servidores (puede ser costoso y puede tener problemas de configuración / configuración compleja según el servidor web que esté usando).
Respuesta original sobre el almacenamiento de claves de CA
[Supongo que te refieres al almacenamiento de la clave privada de la CA, no de las claves del servidor SSL. Actualizaré mi respuesta si me aclara]
Me alegra que esté pensando en cómo almacenar la clave privada de CA. El objetivo de proteger una clave privada de CA es garantizar que no se pueda copiar. La cantidad de esfuerzo que desee poner para protegerla depende de su valor, en dólares, si se la roban.
Estoy seguro al 95% de que openssl ya cifra su clave privada con una contraseña (técnicamente: utiliza una contraseña para obtener una clave AES, luego cifra la clave privada de CA con AES). Así que podría decirse que poner esto dentro de KeePass no te está ganando mucho.
Aquí hay tres escenarios con mayor seguridad:
-
Proteja la clave privada de CA con cifrado de software, como el cifrado de contraseña incorporado de openssl o KeePass.
Pros: Barato, fácil.
Contras: Un pirata informático que irrumpe en su servidor puede copiar el archivo cifrado y forzar la contraseña. Luego tienen su clave privada.
-
Almacene la clave privada de CA en una memoria USB cifrada, como una IronKey . Asegúrese de eliminar siempre el archivo de clave de la máquina de CA después de cada uso.
Pros: Cuando la clave no se está utilizando activamente, no hay nada en la máquina de CA que el atacante pueda robar. Solo hay una copia de la clave privada en una memoria USB física. Difícil de robar sin que alguien se dé cuenta.
Contras: el software malicioso instalado en la máquina de CA puede robar la clave privada la próxima vez que la uses.
-
Air gap the CA. Ejecute su CA de openssl en una máquina que nunca se haya conectado a la red. Transfiera CSR y certificados firmados dentro y fuera a través de memorias USB IronKey.
Pros: Mucho más difícil (pero no imposible) para que un atacante introduzca malware en la máquina de CA y extraiga la clave privada
Contras: complejos e inconvenientes.
-
Utilice un HSM . Esta es la solución de Cadillac: almacene las claves privadas de la CA en un HSM en red, cuando la CA necesita firmar algo, envía la solicitud al HSM.
Pros: Máxima seguridad porque las claves privadas nunca abandonan el HSM; Si la máquina de CA nunca los toca, no pueden ser robados.
Contras: complejo, costoso, puede requerir tiempo de desarrollo y experiencia para configurar.