Предварительные условия
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