Esqueleto do servidor para Ruby

Pré-requisitos

Gems necessárias para a implementação do servidor:

  • google-protobuf (3.2.X usado neste tutorial)
  • gRPC (1.2.X usado neste tutorial)

Faça o download da definição do serviço e crie esta estrutura de diretório:

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

Gere bibliotecas Ruby com base na descrição da interface:

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

Implementar o servidor

Se você precisar do código de esqueleto, peça a um POC do Google.

Testar o servidor sem TLS

Para testes iniciais, o TLS pode ser desativado:

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

Ele não é adequado para uso em produção.

Configurar certificados de produção

Para ativar o TLS no servidor, os seguintes arquivos são necessários:

  • certificates/server.pem a cadeia de certificados do servidor no formato PEM
  • certificates/server.key a chave privada da cadeia de certificados do servidor
  • certificates/trusted_client_roots.pem os certificados raiz confiáveis ao autenticar clientes

O conjunto de certificados raiz de cliente confiáveis é usado para autenticar o cliente. Você pode escolher receber esse conjunto de raízes confiáveis de uma autoridade como a Mozilla ou instalar o conjunto de raízes atualmente recomendado pelo Google Internet Authority G2. No segundo caso, talvez seja necessário atualizar manualmente o certificado raiz.

Estrutura de diretório 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