Pregunta

Estoy creando una aplicación y estoy planeando usar OpenSSL para asegurar las transferencias de datos.

Estoy planeando que el cliente solo valide el certificado del servidor. Estoy confundido sobre cómo debo asegurar el certificado del servidor. Me gustaría cifrar el certificado del servidor que contiene la clave privada, pero no quiero usar ninguna clave codificada para este cifrado.

¿Cuáles son algunas de las prácticas comunes seguidas por las aplicaciones que emplean SSL?

¿Fue útil?

Solución

Solo para asegurarnos de que tenemos nuestra terminología correcta, un " Certificado SSL " En el lenguaje común realmente se compone de dos componentes:

  • Un certificado público
  • Una clave privada

El componente de certificado público está firmado por la CA elegida (autoridad de certificación), después de lo cual se puede distribuir libremente. No es necesario que esté protegido o encriptado, y de hecho se enviará a los clientes que se conecten a su servidor como parte de la negociación de SSL.

El componente de clave privada debe estar protegido. En la mayoría de los casos, esto simplemente se almacena como un archivo cifrado en el servidor. Las soluciones exclusivas utilizan el " prueba de manipulación indebida " hardware criptográfico (HSM - módulos de seguridad de hardware) para almacenar la clave privada. Éstas van desde soluciones basadas en tarjetas inteligentes hasta dispositivos multifunción habilitados para red con controles m / n, etc. Existen riesgos (sin mencionar los costos) asociados con los HSM que no analizaré aquí.

Muchas aplicaciones simplemente retienen la clave privada en el disco. Hay un par de opciones para asegurar el archivo clave:

  • Confíe en la seguridad del sistema y de los permisos de archivo (es decir, no cifre la clave privada). Por ejemplo, la mayoría de los demonios ssh hacen esto.
  • Utilice el mecanismo que su servidor proporciona para cifrar el archivo: el cifrado protegido por contraseña es una característica estándar en la mayoría de los servidores web. (Si está usando su propia API de OpenSSL, elija uno de los formatos de clave nativos obvios).

Como siempre, hay una compensación de seguridad. En particular, si está utilizando un cifrado protegido por contraseña en el archivo de clave privada y experimenta un reinicio inesperado de la aplicación (por ejemplo, corte de energía), entonces será necesario que alguien esté disponible para proporcionar la contraseña a la aplicación cuando se reinicie. Almacenar la contraseña en un archivo que se lee con los scripts de inicialización del sistema (como lo recomiendan al menos dos proveedores de servidores web) agrega poco en términos de seguridad real. Es difícil recomendar dejar el archivo de clave privada sin cifrar, pero si usted es el único administrador / técnico en una pequeña tienda, definitivamente debería considerar qué puede pasar si el servidor se reinicia cuando no está disponible y cuáles son los costos para su empresa. .

Otros consejos

no estoy muy seguro de lo que estás tratando de preguntar. el certificado de servidor se le envía a usted, el cliente; usted valida el certificado al verificar su firma (el uso de SHA-1 no MD5, MD5 ha sido descifrado). La clave que tiene de CA es la parte pública; La CA y el titular del certificado del servidor guardan sus claves privadas para sí mismos. Puede validar el certificado porque la clave pública es suficiente para descifrar un mensaje que se ha cifrado con la clave privada. Por lo tanto, no tiene que preocuparse, por el lado del cliente, de mantener el certificado cifrado en absoluto.

Eche un vistazo al Artículo de Wikipedia sobre SSL / TLS .

>
  

Estoy confundido sobre cómo debo asegurar el certificado del servidor.

No tienes que asegurar el certificado del servidor. Es un documento público

  

Me gustaría cifrar el certificado del servidor que contiene la clave privada

El certificado del servidor no contiene la clave privada.

  

pero no quiero usar ninguna clave codificada para este cifrado.

No necesitas hacer ningún cifrado. El único recurso de servidor que necesita proteger es su clave privada, que es completamente distinta de su certificado. En el caso de OpenSSL, incluso puede ser un archivo diferente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top