Para el certificado del servidor: el conjunto de cifrado indica el tipo de intercambio de claves, que depende del tipo de clave del certificado del servidor. Básicamente tienes lo siguiente:
-
Para los conjuntos de cifrado TLS_RSA_ *, el intercambio de claves utiliza el cifrado de un valor aleatorio elegido por el cliente con la clave pública RSA del servidor, por lo que la clave pública del servidor debe ser del tipo RSA, y debe ser apropiada para el cifrado (la el certificado no debe incluir una extensión Key Usage
que dice "solo firma").
-
Para las suites de cifrado TLS_DHE_RSA_ *, el intercambio de claves utiliza un Diffie-Hellman efímero, y el servidor firma su parte del intercambio de claves DH con su clave RSA. Por lo tanto, la clave pública del servidor debe ser del tipo RSA y debe ser adecuada para las firmas (nuevamente, el certificado no debe restringir el uso de la clave solo al cifrado).
-
Los conjuntos de cifrado TLS_DHE_DSS_ * y TLS_DHE_ECDSA_ * utilizan un intercambio de claves Diffie-Hellman efímero, y la clave del servidor debe ser del tipo, DSA y EC, respectivamente, y debe ser adecuada para firmas.
-
Los conjuntos de cifrado TLS_ECDHE_ * son similares a los conjuntos de cifrado TLS_DHE_ *, excepto que el intercambio de claves Diffie-Hellman es una variante de curva elíptica. Las condiciones en el certificado del servidor siguen siendo las mismas.
-
Los conjuntos de cifrado TLS_DH_ * y TLS_ECDH_ * son diferentes (tenga en cuenta la falta de 'E' después de 'DH'). Para estas suites, el certificado del servidor contiene directamente una clave pública Diffie-Hellman (o una variante de curva elíptica de la misma), y la suite de cifrado luego califica el algoritmo utilizado por la CA emisora para firmar el certificado. Por ejemplo, TLS_DH_RSA_ * significa "el servidor tiene una clave pública DH almacenada en un certificado que fue firmado por alguna CA con RSA". Este es el único caso en el que el tipo de firma en el certificado tiene alguna relación con el conjunto de cifrado. Como en la práctica nadie usa ese tipo de certificado, este caso puede ser descuidado.
Para el certificado del cliente: el cliente presenta un certificado cuando el servidor lo solicita. El tipo de certificado de cliente no tiene relación alguna con el conjunto de cifrado (excepto en el caso extremadamente raro de los certificados DH estáticos, pero nunca he visto que se usen en la práctica). El certificado del cliente debe ser apropiado para las firmas. Como parte del mensaje de reconocimiento que solicita un certificado de cliente, el servidor envía información sobre los algoritmos compatibles (consulte la estándar ). De hecho, TLS 1.2 amplía aún más ese mecanismo al proporcionar una lista flexible de combinaciones de algoritmos y funciones hash compatibles.