Скелет сервера для Ruby

Предварительные условия

Gems необходимые для реализации сервера:

  • google-protobuf (в этом уроке используется версия 3.2.X)
  • grpc (в этом уроке используется версия 1.2.X)

Загрузите определение службы и создайте следующую структуру каталогов:

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

Сгенерируйте библиотеки Ruby из описания интерфейса:

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

Реализация сервера

Если вам нужен скелетный код, обратитесь в POC Google.

Проверьте сервер без TLS

Для первоначального тестирования TLS можно отключить:

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

Это непригодно для производственного использования!

Настройка производственных сертификатов

Для включения TLS на сервере необходимы следующие файлы:

  • certificates/server.pem — цепочка сертификатов для сервера в формате PEM.
  • certificates/server.key — закрытый ключ для цепочки сертификатов сервера.
  • certificates/trusted_client_roots.pem — корневые сертификаты, которым доверяют при аутентификации клиентов.

Набор доверенных корневых сертификатов клиента используется при аутентификации клиента. Вы можете получить этот набор доверенных корней от такого органа, как Mozilla, или установить набор корней, рекомендованный в настоящее время Google Internet Authority G2 . В последнем случае вам, возможно, придется время от времени обновлять корневой сертификат вручную.

Окончательная структура каталогов

[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