Tipos de conexión gRPC
- Inseguro: todos los datos transmitidos sin encriptación.
- Server-Side TLS: cifrado similar al navegador, donde solo el servidor proporciona el certificado TLS al cliente.
- Mutual TLS: el más seguro, tanto el servidor como el cliente se proporcionan sus certificados entre sí.
En producción las peticiones en gRPC deberían tener habilitando la encriptación, para realizar esto necesitamos generar un certificado SSL para permitir que la comunicación sea segura o encriptada end-to-end.
- Crear un Certificate Authority (CA), este certificado puede ser publico si queremos asignar una IP pública (Un dominio) o un certificado privado para el caso de URLs internas.
- El servidor necesita crear una Llave Privada (Server PEM - Private Key**)**, que va permitir acceder al certificado CA y habilitar el permiso el acceso (Server CRT - Signed by CA).
- El cliente requiere un Trust Certificate desde el CA, que es lo que le permite al cliente “confiar”. (CA Root - Public Certificate)
NodeJS - Server
Java - Client
En Java, le recomendamos que use netty-tcnative con BoringSSL cuando use gRPC sobre TLS.
- ChannelSupplies supplies