Skip to Content
Nueva versión 12 disponible 🎉

gRPC SSL/TLS

Configuración de SSL/TLS en el Babel Licensing Service

Proteger el canal gRPC del Babel Licensing Service con SSL/TLS es esencial para que la comunicación entre las aplicaciones cliente y el servidor esté cifrada y sea segura. SSL/TLS (Secure Sockets Layer/Transport Layer Security) es un protocolo de comunicación segura que protege la integridad, la confidencialidad y la autenticidad de los datos.

Para configurar SSL/TLS en el Babel Licensing Service hay que seguir unos pocos pasos. En primer lugar, debe generar u obtener un certificado SSL/TLS válido. Este certificado se usa para establecer la identidad del servidor y cifrar la comunicación.

Una vez que tenga el certificado SSL/TLS, debe configurar el Babel Licensing Service para que lo utilice. Para ello, especifique la ruta y la contraseña del certificado en los ajustes de configuración del Babel Licensing Service y de las aplicaciones cliente.

Certificados autofirmados

Los certificados autofirmados son certificados digitales que genera y firma la misma entidad, sin la intervención de una autoridad de certificación externa de confianza. A diferencia de los certificados emitidos por autoridades de certificación reconocidas, los navegadores web y los sistemas operativos no confían en ellos de forma predeterminada.

Los certificados autofirmados resultan especialmente útiles durante el desarrollo, ya que permiten una comunicación segura sin tener que obtener un certificado de una autoridad de confianza, lo que puede requerir tiempo y dinero. Son idóneos para los escenarios de prueba y desarrollo, en los que el objetivo principal es establecer un canal de comunicación cifrado.

Para crear un certificado autofirmado puede usar PowerShell, un potente lenguaje de scripting y shell de línea de comandos. El siguiente fragmento de código de PowerShell muestra cómo generar un certificado autofirmado:

# Create cert $certname = "<cert name>" $certpassword = "<cert password>" $cert = New-SelfSignedCertificate -Subject "CN=$certname" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256 # Export PFX Export-Certificate -Cert $cert -FilePath "$certname.cer" $mypwd = ConvertTo-SecureString -String "$certpassword" -Force -AsPlainText Export-PfxCertificate -Cert $cert -FilePath "$certname.pfx" -Password $mypwd # Delete from local store $thumbprint = Get-ChildItem -Path "Cert:\CurrentUser\My" | Where-Object {$_.Subject -Match "$certname"} | Select-Object -ExpandProperty Thumbprint Remove-Item -Path "Cert:\CurrentUser\My\$thumbprint" -DeleteKey

Este código de PowerShell genera un certificado autofirmado con los valores certname y certpassword indicados. El cmdlet New-SelfSignedCertificate crea el certificado con parámetros específicos, como el nombre del sujeto, la longitud de la clave y el algoritmo hash.

A continuación, el certificado se exporta en los formatos .cer y .pfx con los cmdlets Export-Certificate y Export-PfxCertificate, respectivamente. El archivo .cer contiene la clave pública, mientras que el archivo .pfx contiene la clave privada junto con el certificado.

Por último, el certificado se elimina del almacén de certificados local con el cmdlet Remove-Item. Este paso es opcional y sirve para que el certificado autofirmado no quede en el almacén de certificados local después de exportarlo.

Con este código de PowerShell para crear un certificado autofirmado puede configurar fácilmente SSL/TLS en el Babel Licensing Service durante el desarrollo y disponer de una comunicación segura por canales cifrados.

Servidor

Los protocolos Secure Socket Layer (SSL) y Transport Layer Security (TLS) son fundamentales para garantizar una comunicación segura entre clientes y servidores. El Babel Licensing Service se integra con gRPC SSL/TLS, lo que permite establecer un canal seguro para transmitir datos por la red.

La subsección «Certificate» de la configuración del punto de acceso gRPC permite especificar los datos del certificado SSL/TLS.

"Endpoints": { "gRPC": { "Url": "https://localhost:5005", "Protocols": "Http1AndHttp2", "Certificate": { "AllowInvalid": true, "Path": "<cert file>.pfx", "Password": "<cert password>" } } }

Aquí puede establecer el parámetro «AllowInvalid» en true cuando use un certificado autofirmado. Esta configuración se adapta a los escenarios de desarrollo y prueba, en los que es habitual usar certificados autofirmados.

Protocolos

Activar los protocolos HTTP1AndHttp2 en la configuración de gRPC SSL/TLS aporta más flexibilidad y compatibilidad a su Babel Licensing Service. Esta opción de configuración solo está disponible cuando SSL/TLS está activado, ya que aprovecha la negociación de protocolos que ofrece ALPN (Application-Layer Protocol Negotiation), la extensión de la capa TLS.

Cuando SSL/TLS está activado, la capa TLS actúa como mediadora de protocolos y permite que HTTP/1 y HTTP/2 coexistan en el mismo puerto. Así, los clientes que usan HTTP/1 o HTTP/2 pueden comunicarse con el Babel Licensing Service sin necesidad de puertos ni configuraciones independientes.

HTTP/1 es un protocolo muy extendido para la comunicación en la web. Sigue un modelo de solicitud y respuesta, en el que los clientes envían solicitudes a los servidores y reciben las respuestas correspondientes. El protocolo HTTP/1 es conocido por su compatibilidad con numerosas aplicaciones cliente y frameworks.

Por su parte, el protocolo HTTP/2 aporta mejoras de rendimiento importantes respecto a su predecesor. Introduce características como la multiplexación, la compresión de cabeceras y el envío desde el servidor (server push), que dan como resultado una comunicación más rápida y eficiente entre clientes y servidores. Al activar HTTP/2 puede aprovechar estas capacidades avanzadas para mejorar el rendimiento y la capacidad de respuesta.

Cliente

Para configurar una aplicación cliente de modo que proteja el canal gRPC con SSL/TLS, puede usar el código siguiente:

BabelLicensing.Configure(config => { config.ServiceUrl = "https://localhost:5005"; var certificate = new X509Certificate2("<cert file>.pfx", "<cert password>"); config.UseGrpc(options => { options.HttpHandler = new HttpClientHandler() { ClientCertificates = { certificate }, ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator }; }); });

En este fragmento de código, el objeto config representa la configuración del Babel Licensing Service. La propiedad ServiceUrl se establece en la URL del servicio, que incluye el esquema https para indicar el uso de SSL/TLS.

La variable certificate se crea cargando el archivo de certificado (en formato .pfx) e indicando la contraseña correspondiente. El método UseGrpc configura las opciones del canal gRPC mediante una devolución de llamada, en la que se asigna el HttpClientHandler con la propiedad ClientCertificates. De este modo, el cliente presenta el certificado adecuado durante el protocolo de enlace SSL/TLS.

Además, ServerCertificateCustomValidationCallback se establece en HttpClientHandler.DangerousAcceptAnyServerCertificateValidator. Esta devolución de llamada omite la validación predeterminada del certificado del servidor y acepta cualquier certificado que presente el Babel Licensing Service. Es adecuado para el desarrollo y las pruebas, pero debe tratarse con precaución en entornos de producción.

Al configurar así la aplicación cliente, se establece un canal gRPC seguro mediante SSL/TLS para comunicarse con el Babel Licensing Service.

Last updated on