Respuesta corta: puede ser , pero es complicada y depende del tipo de certificado que tenga el servidor y de los conjuntos de cifrado TLS que está configurado para usar.
Esta respuesta es básicamente una copia de esta página wiki de openssl . Veamos algunos ejemplos.
RSA puro
Para estos, el certificado del servidor contendrá una clave RSA y usted usará una suite de cifrado como
TLS_RSA_WITH _....
La clave de sesión se generará en el lado del cliente y se enviará al servidor cifrado con la clave RSA del servidor. Para la parte de autenticación del protocolo de enlace, el servidor usará la misma clave RSA para producir una firma (creo).
DH estático - anónimo
Para estos, el servidor utiliza las mismas claves DH para cada conexión, sin embargo, no hay certificado, por lo que el cliente no puede verificar que esta clave pertenece realmente al servidor y no a un administrador. . Utilizará una suite de cifrado como
TLS_DH_anon_WITH _....
Nota: claramente esto es inseguro.
DH estático - con certificado
Para estos, el servidor usa las mismas claves DH para cada conexión y la clave pública se colocará en el certificado del servidor (un certificado DH en lugar del certificado RSA más común). Utilizará una suite de cifrado como
TLS_DH_RSA_WITH _...
Como se señala aquí , el algoritmo de firma (RSA / DSS) indica qué algoritmo de firma usó la AC para firmar el certificado y no hay firma como parte del apretón de manos; Si el servidor llega a la misma clave de sesión, debe tener la clave privada DH correspondiente.
Nota: esto es antiguo y está en desuso, la gente prefiere DHE ahora.
DHE + RSA efímero
Para estos, el certificado del servidor contendrá una clave RSA y usted usará una suite de cifrado como
TLS_DHE_RSA_WITH _...
Dado que el DH es efímero, se generará una nueva clave DH para cada nueva conexión, por lo que no es necesario colocarlo en un certificado. La clave RSA se usa para firmar una respuesta de desafío para demostrar que el servidor es quien dice ser. Estos son los cifrados preferidos en estos días.