Certificados SSL

Introducción

A menudo se desea usar conexiones SSL para las comunicaciones para evitar ataques "man in the middle"(hombre en el medio). Godot tiene una envoltura de conexión, StreamPeerSSL, que puede tomar una conexión regular y añadir seguridad a su alrededor. La clase HTTPClient también soporta HTTPS utilizando esta misma envoltura.

Godot incluye un certificado SSL de Mozilla, pero puedes especificar un archivo .crt en los ajustes del proyecto:

../../_images/ssl_certs.png

Este archivo puede contener cualquier número de certificados públicos en formato PEM.

Por supuesto, recuerda añadir .crt como filtro para que el exportador lo reconozca al exportar tu proyecto.

../../_images/add_crt.png

Hay dos formas de obtener certificados:

Enfoque 1: certificado autofirmado

El primer enfoque es el más simple: genera un par de claves privadas y públicas, y pon el par público en el archivo.crt (en formato PEM). La clave privada debe ir a tu servidor.

OpenSSL tiene algo de documentación sobre esto. Este enfoque también no requiere validación de dominio ni requiere que tu gastes una cantidad considerable de dinero en la compra de certificados de una CA.

Enfoque 2: certificado CA

El segundo enfoque consiste en utilizar una autoridad de certificación (CA) como Verisign, Geotrust, etc. Este es un proceso más engorroso, pero es más "oficial" y asegura que tu identidad está claramente representada.

A menos que estés trabajando con grandes empresas o corporaciones, o necesites conectarte a los servidores de otra persona (es decir, conectarte a Google o a algún otro proveedor de REST API a través de HTTPS), este método no es tan útil.

Además, cuando se utiliza un certificado emitido por CA, debes habilitar la validación de dominio, para asegurarte de que el dominio al que te estás conectando es el deseado, de lo contrario cualquier sitio web puede emitir cualquier certificado en la misma CA y funcionará.

Si estás usando Linux, puedes usar el archivo certs suministrado, generalmente ubicado en:

/etc/ssl/certs/ca-certificates.crt

Este archivo permite conexiones HTTPS a prácticamente cualquier sitio web (por ejemplo, Google, Microsoft, etc.).

O elije cualquiera de los certificados más específicos si te estás conectando a uno específico.