Esqueleto de servidor para Ruby

Requisitos previos

Gems necesarias para la implementación del servidor:

  • google-protobuf (3.2.X se usa en este instructivo)
  • grpc (1.2.X que se usa en este instructivo)

Descarga la definición del servicio y crea esta estructura de directorios:

[base_dir]
├── certificates
├── lib
├── protos
    └── booking_service.proto
└── server.rb

Genera bibliotecas de Ruby a partir de la descripción de la interfaz:

$ cd [base_dir]
$ grpc_tools_ruby_protoc -I protos --ruby_out=lib --grpc_out=lib protos/booking_service.proto

Implementa el servidor

Si necesitas el código de esqueleto, comunícate con un POC de Google.

Prueba el servidor sin TLS

Para las pruebas iniciales, se puede inhabilitar TLS:

$ cd [base_dir]
$ ruby server.rb --disable_tls

Esto no es adecuado para producción.

Configura certificados de producción

Para habilitar TLS en el servidor, se requieren los siguientes archivos:

  • certificates/server.pem es la cadena de certificados del servidor en formato PEM.
  • certificates/server.key es la clave privada de la cadena de certificados del servidor.
  • certificates/trusted_client_roots.pem los certificados raíz en los que se confía cuando se autentican los clientes

El conjunto de certificados raíz de cliente de confianza se utiliza cuando se autentica la cliente. Puedes obtener este conjunto de raíces de confianza de una autoridad como Mozilla o instalar el conjunto de raíces que recomienda actualmente la Autoridad de Internet de Google G2. En este último caso, es posible que debas actualizar de forma manual el certificado raíz a veces.

Estructura de directorio final

[base_dir]
├── certificates
    ├── server.pem
    ├── server.key
    └── trusted_client_roots.pem
├── lib
    ├── booking_service_pb.rb
    └── booking_service_services_pb.rb
├── protos
    └── booking_service.proto
└── server.rb