¿Cómo funciona el protocolo de conexión SSL con el certificado autofirmado? [duplicar]

6

Estoy usando el certificado autofirmado, pero no sé cómo funciona este protocolo. Conecto dos aplicaciones con un socket SSL y funciona bien. El servidor es una aplicación de Python y el cliente es una aplicación de Android. Creé el certificado autofirmado con openSSL, ahora tengo dos archivos: la clave privada y el certificado autofirmado. El servidor usa todos los archivos pero el cliente solo usa un certificado autofirmado.

Encontré muchas páginas que explican la conexión del protocolo con certificado firmado y CA, pero ninguna con autofirmado sin CA.

Protocolo con firmado:     Servidor cliente

ClientHello                  -------->
                                                ServerHello
                                               Certificate*
                                         ServerKeyExchange*
                                        CertificateRequest*
                             <--------      ServerHelloDone
Certificate*
ClientKeyExchange
CertificateVerify*
[ChangeCipherSpec]
Finished                     -------->
                                         [ChangeCipherSpec]
                             <--------             Finished
Application Data             <------->     Application Data

(Este esquema se ha copiado descaradamente del RFC)

¿Qué tal con un certificado autofirmado?

    
pregunta juve164 14.06.2014 - 12:47
fuente

3 respuestas

4

En el protocolo SSL (ahora denominado TLS ), los certificados son una caja negra: desde el punto de vista de SSL, los certificados se reciben del servidor, y de alguna manera la clave pública a usar se vuelve conocida por el cliente. Los certificados son un barco utilizado para transmitir la clave pública del servidor al cliente, y todo el negocio de CA es una forma de que el cliente obtenga cierta seguridad de que la clave pública recibida es realmente la correcta del servidor deseado.

Cuando el servidor utiliza un certificado autofirmado, el cliente no puede transferir ninguna confianza de una CA conocida para asegurarse de que el certificado autofirmado recibido sea lo auténtico y no una imitación de algún atacante activo. Sin embargo, si el cliente ya tiene conocimiento de la clave pública del servidor (por ejemplo, durante alguna fase de instalación anterior, bajo condiciones controladas, el cliente firmó el certificado autofirmado del servidor, y el cliente lo recuerda) Luego, el cliente, por definición, conoce la clave pública del servidor correcto y la usa.

En cualquier caso, el protocolo de nivel SSL no cambia por completo. Las imágenes fijas del servidor envían un mensaje Certificate y el cliente sigue utilizando la clave pública del servidor para su mensaje ClientKeyExchange .

    
respondido por el Tom Leek 14.06.2014 - 15:18
fuente
1

EDITAR: Consulte aquí: ¿Cómo funciona SSL / TLS? O Aquí certificado autofirmado: cómo funciona

  

No entiendo, cuando firmé el certificado por CA, el protocolo es el siguiente: el cliente envía Hola al servidor --- El servidor envía el saludo y el certificado al cliente --- El cliente verifica el certificado con una CA y envía la confirmación al servidor --- Finalmente el servidor envía la confirmación firmada al cliente. - juve164 14 de junio de 14 a las 12:15

     

¿Qué sucede con un certificado autofirmado? El cliente envía el saludo al servidor. El servidor envía el certificado al cliente y el cliente verifica el certificado, pero ¿cómo? comparar si es el mismo certificado ??? - juve164 14 de junio de 14 a las 12:23

Pongamos algo de perspectiva en esto. Certificado de usuario de clave pública de citoprografía. Esto significa que una clave pública y una clave privada se generan simultáneamente y se unen matemáticamente. Solo esta clave privada funciona con esta clave pública y viceversa.

Cuando introduce un certificado, no es más que una "hoja de papel con una firma". Esa firma es de la clave privada. Esto solo proporciona una referencia para el uso de la clave; también conocido como google.com.

Apretón de manos TLS:

C ClientHello: Este es el comienzo, estamos hablando con un servidor para que podamos iniciar el proceso TLS.

S ServerHello: el servidor responde para reconocer que estamos hablando en TLS ahora.

S Certificado: Esta es una copia del certificado que está instalado en el servidor.

S ServerKeyExchange: Esto es parte del protocolo utilizado para permitir que ambos dispositivos lleguen a la misma clave simétrica para usar después del protocolo de enlace TLS

S Solicitud de certificado: solo se utiliza si el servidor desea verificar el cliente con un certificado. Esto se puede transmitir como una forma de autenticación.

S ServerHelloDone: El servidor está listo y es parte del protocolo de enlace TLS.

C Certificado: Solo se proporciona si es necesario; vea la solicitud de certificado arriba.

C ClientKeyExchange: es el complemento de ServerKeyExchange para asegurarse de que ambas partes tengan una clave simétrica.

C CertificateVerify: parte de CertificateRequest y TLS del lado del cliente.

C ChangeCipherSpec: Esto suele indicar que hemos terminado con todo y estamos "listos para comenzar a hablar con el cifrado".

C Finalizado: Este es el final del lado del cliente.

S ChangeCipherSpec: El servidor está de acuerdo con la especificación de cifrado.

S Finalizado: Todo está listo y ahora estamos totalmente encriptados.

En este proceso, el certificado que enviará el servidor será el configurado en el servidor. Si esto está firmado por una CA, normalmente incluiría el certificado de hoja (el que tiene el nombre de dominio), su autoridad de firma inmediata y el padre de esa autoridad de firma (y así sucesivamente si corresponde). Por lo tanto, Certificate normalmente incluiría 3 certificados físicos.

El cliente mira al emisor en el certificado de hoja y comienza a seguir la cadena de respaldo. El Intermedio tiene un emisor (que es la CA raíz) y, por lo tanto, verificará ese certificado. La CA raíz es un certificado de autofirma. Es un certificado donde su propia clave privada firmó el certificado, no otra entidad. Mientras el cliente confíe en la CA raíz, confiará en el intermediario, lo que a su vez significa que confiará en la hoja.

Con un certificado autofirmado en el servidor, solo hay un certificado emitido para que el cliente lo verifique. Mirará al emisor del certificado y se asegurará de que esté firmado por sí mismo. Mientras el cliente confíe en esa CA, confiará en la conexión y continuará.

Todos los CA raíz son autofirmados. La única razón por la que su computadora confía en ellos es porque están configurados en su computadora para que sean confiables.

enlace

    
respondido por el Andrew 24.03.2017 - 17:40
fuente
0

De Wikipedia: enlace

  

En criptografía y seguridad informática, un certificado autofirmado es un certificado de identidad firmado por la misma entidad cuya identidad certifica. Este término no tiene nada que ver con la identidad de la persona u organización que realizó el procedimiento de firma. En términos técnicos, un certificado autofirmado es uno firmado con su propia clave privada.

Su clave privada es su CA.

    
respondido por el user43488 14.06.2014 - 12:58
fuente

Lea otras preguntas en las etiquetas