Si sigo el razonamiento de un colega, parece que nunca debe ejecutar Apache Webserver o Tomcat en un servidor de Windows si desea mantener seguro el certificado https.
Permítame explicarle antes de que esta pregunta se convierta en una batalla de trolls entre Windows y Linux.
Por ejemplo, cuando se utiliza Apache Tomcat para un sitio web https, la clave privada se almacena en un almacén de claves. Para que Tomcat pueda usar esta clave, tenemos tres opciones:
- No usar contraseña en el almacén de claves;
- La contraseña del almacén de claves se debe ingresar al iniciar el servicio Tomcat;
- La contraseña del almacén de claves se establece en texto sin formato en un archivo de configuración.
Usar la opción 3 parece ser el más practicado. Pero cualquiera que tenga acceso a este archivo y al almacén de claves puede extraer la clave privada. Obviamente, puede proteger el sistema de archivos del archivo de almacenamiento de claves y de configuración. Sin embargo, parece que Linux ofrece más opciones para separar el acceso a esos archivos para diferentes procesos. Este razonamiento llevó a la conclusión con la que comencé.
No estoy familiarizado con cómo Windows o IIS manejan esto, pero espero que esto funcione de alguna manera similar bajo el capó. Mi problema es que no estoy seguro. ¿Cómo puede IIS usar el certificado en Windows si nadie ingresa su contraseña? ¿O simplemente se almacena en el registro en lugar de un archivo de configuración? ¿Y es la configuración de seguridad de certificado alta igual a la opción 2?
¿Podría alguien explicarme cómo funciona esto?
Por cierto. No estoy interesado en HSM. Por ahora, me interesa saber si Windows IIS protege un certificado o una clave privada que no utiliza la opción 3 y cómo lo hace.
He buscado, pero no pude encontrar respuestas concluyentes. He navegado 30 páginas etiquetadas con "certificados" y he usado Google. Me resulta difícil extraer una respuesta definitiva de ellos. A continuación menciono las fuentes que encontré de alguna ayuda. Realmente espero que pueda ayudarme o indicarme la fuente correcta.
Seguridad en stackExchange:
- ¿Qué tan segura es mi clave privada en el certificado digital de Windows? tienda?
- ¿Cómo debo almacenar las claves SSL en el servidor?
- ¿Cómo almacenar una clave RSA privada para una aplicación?
- ¿Cuáles son algunas buenas prácticas de diseño para certificados multiplataforma? almacenamiento?
Microsoft:
- [Blog de TechNet] ¿Qué es una protección de clave sólida en Windows?
- [TechNet, EFS] Cómo se almacenan las claves privadas
Varios sitios:
- [ServerFault] Cómo administrar una protección de clave privada SSL de un servidor web (contraseña vs. ninguna contraseña)?
- [CodingHorror] Manteniendo Privadas las Claves Privadas
- [SecurityInnovation] Cómo probar un almacén de claves inseguro Vulnerabilidades
- [RootSecurity] Cómo exportar certificados "no exportables" de la Tienda de certificados de Microsoft
- [Symantec] Cómo los atacantes roban claves privadas de certificados digitales